0

ドキュメントを読みましたが、関数でファイルパスを入力する方法がわかりませんopen()

ファイルパスが次の場合:

/opt/myapp/report/sample.txt 

また

$MYPATH/report/sample.txt(ここで$ MYPATH = / opt / myapp)

このようにステートメントを記述しても大丈夫ですか?

f = open('/opt/myapp/report/sample.txt', "r")

また

f = open('$MYPATH/report/sample.txt', "r")
4

2 に答える 2

5

ここで実行したいのは、パス内の環境変数を展開することです。これは、次のコマンドで実行できますos.path.expandvars()

環境変数を展開した引数を返します。$nameまたは${name}の形式の部分文字列は、環境変数nameの値に置き換えられます。不正な形式の変数名と存在しない変数への参照は変更されません。

Windowsでは、$nameと${name}に加えて、%name%拡張がサポートされています。

例えば:

with open(os.path.expandvars(path), "r") as f:
    ...

ここでのステ​​ートメントの使用に注意してくださいwith。これは、例外が発生した場合でもファイルが正しく閉じられ、読みやすくなるため、ファイルを開くための最良の方法です。

于 2012-12-09T16:32:42.227 に答える
1

を使用os.environして環境変数の値を取得し、それをパーツos.path.joinと組み合わせることができます。report/sample.txt

os.path.join(os.environ['MYPATH'], 'report/sample.txt')

絶対パスも機能します。

于 2012-12-09T16:33:17.323 に答える