Заставить shlex.split уважать пути UNC - PullRequest
6 голосов
/ 28 января 2011

Я использую 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 ]

11 голосов
/ 28 января 2011

Не знаю, поможет ли это вам:

>>> shlex.split(raw_args, posix=False)
['-path', '"\\\\server\\folder\\file.txt"', '-arg', 'SomeValue']
0 голосов
/ 28 января 2011

Попробуйте:

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

Примечание r перед открывающей одинарной кавычкой.

...