私はshlex.split
を使用して、subprocess.Popen
呼び出しの引数をトークン化しています。これらの引数のいずれかがUNCパスであるときしかし、物事は毛深い取得する:あなたが見ることができるようにshlex.splitにUNCパスを尊重する
import shlex
raw_args = '-path "\\\\server\\folder\\file.txt" -arg SomeValue'
args = shlex.split(raw_args)
print raw_args
print args
は
-path "\\server\folder\file.txt" -arg SomeValue
['-path', '\\server\\folder\\file.txt', '-arg', 'SomeValue']
を生成し、前のバックスラッシュは、ストリップダウンされています。私は次の2行を追加することでこれを回避していますが、より良い方法がありますか?
if args[0].startswith('\\'):
args[0] = '\\' + args[0]
あなたの質問は不確実です。上記の例では、文字列リテラルを使用しています。あなたは、dusanの答えのテクニックを使うか、生の文字列リテラルを使うだけで対処できます。しかし、あなたは私の答えに文字列がファイルから取られたとコメントしました。この場合、Pythonはそれらに触れることさえしません。同じ量のスラッシュを持ちます。ファイルから文字列を読み込んで印刷してみてください。どちらか、または私は何かが明らかに欠けている。 –
@Alex良い点。上のサンプルのファイルから文字列を読み込むときに見た振る舞いを再現したので、同様に動作すると仮定しました。ファイルからロードされた場合の文字列の表示を再確認します。 –