Background
I use the command dir/s
in batch files all the time. But, I am unable to call this using python. NOTE: I am using Python 2.7.3.
Code
import subprocess
subprocess.call(["dir/s"])
Error Message
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
I have tried changing the quotations but nothing has worked.
How would I call the dir/s
module using subprocess
?
I finally found the answer. To list all directories in a directory (e.g.
D:\\
,C:\\
) on needs to first import theos
module.Then, they need to say that they want to list everything. Within that, they need to make sure that the output is printed.
That was how I was able to solve it. Thanks to this.
You need a space between
dir
and/s
. So break it into an array of 2 elements. Also as carlosdoc pointed out, you would need to add shell=True, since thedir
command is a shell builtin.But if you're trying to get a directory listing, make it OS independent by using the functions available in the
os
module such asos.listdir()
,os.chdir()
This is a lot different than what you're asking but it solves the same problem. Additionally, it solves it in a pythonic, multiplatform way:
As it's an inbuilt part of the command line you need to run it as:
How about
Not verified.