Sto usando shlex.split
per tokenizzare gli argomenti per una chiamata subprocess.Popen
. Tuttavia, quando uno di questi argomenti è un percorso UNC, le cose si fanno peloso:Rendere shlex.split rispetto ai percorsi UNC
import shlex
raw_args = '-path "\\\\server\\folder\\file.txt" -arg SomeValue'
args = shlex.split(raw_args)
print raw_args
print args
produce
-path "\\server\folder\file.txt" -arg SomeValue
['-path', '\\server\\folder\\file.txt', '-arg', 'SomeValue']
Come si può vedere, i backslash nella parte anteriore sono smontate. Sto lavorando su questo aggiungendo le seguenti due righe, ma c'è un modo migliore?
if args[0].startswith('\\'):
args[0] = '\\' + args[0]
La tua domanda è incerta. Nell'esempio sopra stai usando stringhe letterali. Puoi farcela usando la tecnica nella risposta di dusan o semplicemente usando valori letterali stringhe grezzi. Tuttavia, hai commentato la mia risposta che le stringhe sono state prese da un file. In questo caso, Python non tenterà nemmeno di toccarli, avranno la stessa quantità di barre. Prova a caricare la stringa da un file e stamparla. O quello, o mi manca qualcosa di ovvio. –
@Alex Buon punto. Ho riprodotto il comportamento che ho visto durante il caricamento della stringa da un file nell'esempio sopra, quindi ho pensato che si sarebbe comportato in modo simile. Verificherò l'aspetto della stringa se caricata dal file. –