7

shlex.split用来标记subprocess.Popen调用的参数。但是,当其中一个 args 是 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']

如您所见,前面的反斜杠被剥离了。我正在通过添加以下两行来解决这个问题,但是有更好的方法吗?

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 回答