Um einen Befehl in Python, für Windows, ich mache:Befehl über subprocess unter Windows mit Leerzeichen in Dateinamen
import subprocess
subprocess.check_output(lsCommand, shell=True)
wo lsCommand
ist eine Liste von Strings, die den Bash-Befehl bilden. Dies funktioniert, außer wenn es einige Eingaben mit Leerzeichen enthält. Zum Beispiel das Kopieren eines Namens + Wechsel:
Um zu versuchen und tun cp "test 123" test123
:
lsCommand = ['cp', 'test 123', 'test123']
subprocess.check_output(lsCommand, shell=True)
schlägt fehl, weil es denkt, dass ich versuche, cp "test" "123" test123
zu tun. Error (Google Storage Sachen zu tun):
python: can't open file 'c:\GSUtil\gsutil.py cp -n gs://folderl/test': [Errno 22] Invalid argument
Dann versuche ich
subprocess.check_output('cp "test 123" test123', shell=True)
Same Scheiße. Irgendwelche Ideen?
Warum verwenden Sie 'shell = True'? Gegeben eine Liste ohne 'shell = True' sollte funktionieren, denke ich. – zondo
@zondo nicht auf Windows, nein. Linux yay – Roman
Siehe auch http://StackOverflow.com/Questions/3172470/actual-meaning-of-shell-true-in-subprocess – tripleee