2011-01-28 4 views
5

호출에 대해 shlex.split을 사용하여 토큰 화합니다. 그 인수 중 하나가 UNC 경로입니다 그러나, 상황이 털이 얻을 : 당신이 볼 수 있듯이shlex.split가 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] 
+0

질문이 확실하지 않습니다. 위의 예제에서 문자열 리터럴을 사용하고 있습니다. 당신은 dusan의 대답에서 기술을 사용하거나 단순한 문자열 리터럴을 사용하여 그들에 대처할 수 있습니다. 그러나, 당신은 문자열이 파일에서 가져온 내 대답에 댓글을 달았습니다. 이 경우, 파이썬은 그것들을 만지려고 시도조차하지 않을 것이고, 똑같은 양의 슬래시를 갖게 될 것입니다. 파일에서 문자열을로드하여 인쇄 해보십시오. 어느 쪽이든, 또는 나는 명백한 것을 놓치고있다. –

+0

@Alex 좋은 지적. 위 예제의 파일에서 문자열을로드 할 때 보았던 동작을 재현 했으므로 유사하게 동작 할 것이라고 가정했습니다. 파일에서로드 된 문자열이 어떻게 보이는지 다시 확인합니다. –

답변

9

이 당신을 도움이된다면 나도 몰라 :

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

이 시도 :

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

주 오프닝 따옴표 전에 R.

+0

문자열이 파일에서 가져온 문자열이므로 불행히도 옵션이 아닙니다. –

관련 문제