让shlex.split尊重UNC路径

9 投票
2 回答
3901 浏览
提问于 2025-04-16 10:47

我正在使用 shlex.split 来分割参数,以便用于 subprocess.Popen 的调用。不过,当其中一个参数是 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]

2 个回答

0

试试这个:

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

注意在开头的单引号前面有一个r

17

我不知道这对你有没有帮助:

>>> shlex.split(raw_args, posix=False)
['-path', '"\\\\server\\folder\\file.txt"', '-arg', 'SomeValue']

撰写回答