2011-01-28 16 views
5

subprocess.Popen çağrı için bağımsız değişkenleri belirtmek için shlex.split kullanıyorum. O args biri UNC yolu Ancak, işler kıllı olsun: Gördüğünüz gibishlex.split UNC yollarına saygı gösteriliyor

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'] 

üretir, önünde ters eğik çizgi aşağı kaldırılır. Aşağıdaki iki satırı ekleyerek bu konuda çalışıyorum, ama daha iyi bir yolu var mı?

if args[0].startswith('\\'): 
    args[0] = '\\' + args[0] 
+0

Sorunuz belirsiz. Yukarıdaki örnekte dize değişmezlerini kullanıyorsunuz. Dusan'ın cevabındaki tekniği kullanarak ya da sadece ham dize değişmezlerini kullanarak onlarla başa çıkabilirsiniz. Ancak, cevabımı dizelerin bir dosyadan alındığını söylediniz. Bu durumda, Python onlara dokunmaya bile çalışmaz, aynı miktarda eğime sahip olurlar. Dizenizi bir dosyadan yüklemeyi ve yazdırmayı deneyin. Ya bu ya da açık bir şey eksik. –

+0

@Alex İyi nokta. Yukarıdaki örnekte bir dosyadan dize yüklerken gördüğüm davranışı yeniden ürettim, böylece benzer şekilde davranacağını varsaydım. Dosyadan yüklendiğinde dizenin neye benzediğini kontrol edeceğim. –

cevap

9

bu yardımcı olup bilmiyorum:

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

bu deneyin:

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

Not açılış bekar alıntı önce r.

+0

Dize bir dosyadan geliyor, bu yüzden maalesef bu bir seçenek değil. –

İlgili konular