-2

いくつかのファイルを使用するプログラムをローカル マシンで実行しています。以下を使用して、ファイルへの参照を作成します。os.path.join( tempfile.gettempdir(), 'filename.txt' )

その後--log-file filepath、filepath が上記で説明したファイルの 1 つであるいくつかのパラメーターを受け入れるプログラムを実行しています。

私のマシンでは、python はパスのバックスラッシュを作成しますが、二重のバックスラッシュは作成しません。プログラムは、エスケープ文字と見なされ、二重のバックスラッシュである必要があるため、文句を言います。

Pythonで二重のバックスラッシュを使用して作業パスを取得することを確認する標準的な方法はありますか? 正規表現を使用することもできますが、提供するものに似たものを好むでしょうos.。多分私は何かが足りない。

私は以下を使用してプログラムを呼び出していsubprocess.Popenます:

self._proc = subprocess.Popen( command.split( ' ' ) )

のようなものはどこcommandですかpcix.exe --log-file file_path

また、コンソールでテストを実行すると、Python がパスに二重のバックスラッシュを生成しないことがわかります。

>>> print os.path.join(tempfile.gettempdir(), "test.txt")
c:\users\manilo~1\appdata\local\temp\test.txt

print コマンドを省略すると、同じパスが生成されます。

>>> os.path.join(tempfile.gettempdir(), "test.txt")
c:\users\manilo~1\appdata\local\temp\test.txt

理由はありますか?

PS私が実行しているプラ​​ットフォームはCPython

4

1 に答える 1

-1

試す:

print os.path.join(tempfile.gettempdir(), "test.txt").replace('\\\\','\\\\\\\\')
于 2013-03-22T17:13:47.527 に答える