7

shlex.split呼び出しの引数をトークン化するために使用していsubprocess.Popenます。ただし、これらの引数の1つが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]
4

2 に答える 2

14

これがあなたに役立つかどうかはわかりません:

>>> shlex.split(raw_args, posix=False)
['-path', '"\\\\server\\folder\\file.txt"', '-arg', 'SomeValue']
于 2011-01-28T17:10:31.233 に答える
0

これを試して:

raw_args = r'-path "\\\\server\\folder\\file.txt" -arg SomeValue'

冒頭の一重引用符の前のrに注意してください。

于 2011-01-28T18:06:31.743 に答える