Wie zu verwenden der dir/s-Befehl in Python?
Hintergrund
Ich den Befehl dir/s
in batch-Dateien die ganze Zeit. Aber, ich bin nicht in der Lage diesen Aufruf mit python. HINWEIS: ich bin mit Python 2.7.3.
Code
import subprocess
subprocess.call(["dir/s"])
Fehlermeldung
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
subprocess.call(["dir/s"])
File "C:\Python27\lib\subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Ich habe versucht, die änderung der Zitate aber hat nichts geklappt.
Wie würde ich rufen Sie die dir/s
Modul mit subprocess
?
- Warum nutzen Sie nicht
os.listdir
(in einer Schleife)? - Es ist einfacher zu bedienen
os.walk()
- keiner von den codes funktioniert. Ich war nicht in der Lage, um die Verzeichnis-Auflistung.
- Jungs - bitte überprüfen Sie Ihren code, bevor Sie es schreiben. Nichts hat funktioniert, so weit. 🙁
- Vielleicht sollten Sie mehr Aufmerksamkeit auf das, was Sie Lesen. Ich hatte nicht erlaubt, alle Codes, die ich gerade erwähnt mathod, die Sie verwenden, um den job zu erledigen. Schauen Sie in das Handbuch, um zu sehen, wie es funktioniert.
- was ich meinte war, dass wenn ich versuchte, Sie zu verwenden
os.walk
in einer Schleife, es hat nicht funktioniert. Das zweite war nicht auf dich bezogen. - Was ist der Grund für all die -1 ist? Was kann ich tun, um zu verbessern, die Frage, auch wenn es schon gelöst?
- Mögliche Duplikate von Python ausführen von windows-cmd-Funktionen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie etwa
Nicht verifiziert.
shell=True
wenn Sie nicht brauchen, um -subprocess.call(["cmd", "/c", "dir", "/s"])
ist besser.0
ohne Druck-Verzeichnis. Was ist der Grund für diese.D:\` Drive? Also, why did the original code return
0? Lastly, what is the difference between
call` undcheck_output
? Vielen Dank für Ihre Hilfe!Dies ist sehr viel anders als das, was Sie Fragen, aber es löst das gleiche problem. Darüber hinaus löst es in einem pythonic, Multiplattform-Weg:
directory
wurde nicht definiert. Ich bin auch davon aus, dassext
würde nicht funktionieren. Sorry für so eine n00b, aber könntest du bitte schreiben, die die ganze Sache?recglob('C:\foo\bar', '.baz')
fnmatch
zu arbeiten? Auch könnte ich dir eine Liste der alle meine Dateien aus, indem Sie".*"
? Wäre das möglich, in irgendeiner Weise, was-so-ever? Danke, dass du so viel für die Hilfe.import fnmatch
am Anfang des Skripts. Ebenso müssen Sie auch eine andere Linie mitimport os
.import os
veraltet war. Ich weiß, dass es Ausnahmen gibt. Ist das einer von Ihnen?import fnmatch
um es zu benutzen und die gleiche Logik gilt füros
's Funktionen.Benötigen Sie einen Raum zwischen
dir
und/s
. So brechen Sie in ein array mit 2 Elementen. Auch als carlosdoc wies darauf hin, würden Sie brauchen, um hinzuzufügen, shell=True, da diedir
command ist ein shell-builtin.Aber wenn Sie versuchen, ein Verzeichnis-Auflistung, die machen es OS unabhängig durch die Nutzung der verfügbaren Funktionen in der
os
Modul wieos.listdir()
,os.chdir()
os
Funktionen?dir
und die/s
.Habe ich endlich die Antwort gefunden. Liste alle Verzeichnisse in ein Verzeichnis (z.B.
D:\\
,C:\\
) auf, muss zunächst importieren Sie dieos
Modul.Dann müssen Sie sagen, dass Sie möchten, um die Liste alles. Innerhalb, dass, die Sie benötigen, um sicherzustellen, dass die Ausgabe gedruckt.
Das war, wie ich war in der Lage, es zu lösen. Dank diese.
Da es ein eingebautes Teil der Befehlszeile, die Sie ausführen müssen, um es als:
subprocess.call(["cmd", "/c", "dir", "/s"])
.shell=True
und nannte es sich selbst, als er aufgerufen wird, entweder Weg-obwohl, ich nehme an, einige erwägen die ehemaligen wohl deutlicher.