【问题标题】:Making shlex.split respect UNC paths使 shlex.split 尊重 UNC 路径
【发布时间】:2011-01-28 16:54:06
【问题描述】:

我正在使用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]

【问题讨论】:

  • 您的问题不确定。在上面的示例中,您使用的是字符串文字。您可以通过使用 dusan 的答案中的技术或简单地使用原始字符串文字来应对它们。但是,您评论了我的回答,即字符串是从文件中获取的。在这种情况下,Python 甚至不会尝试触摸它们,它们将具有相同数量的斜线。尝试从文件中加载您的字符串并打印它。要么,要么我错过了一些明显的东西。
  • @Alex 好点。我重现了从上面示例中的文件加载字符串时看到的行为,所以我认为它的行为类似。如果从文件中加载,我将仔细检查字符串的外观。

标签: python shlex


【解决方案1】:

我不知道这是否对你有帮助:

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

【讨论】:

    【解决方案2】:

    试试这个:

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

    在单引号前注意 r

    【讨论】:

    • 字符串来自一个文件,所以很遗憾这不是一个选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2011-09-14
    • 2017-01-10
    • 1970-01-01
    相关资源
    最近更新 更多