How to use the dir/s command in Python?

后端 未结 5 1961
[愿得一人]
[愿得一人] 2021-01-13 07:13

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

相关标签:
5条回答
  • 2021-01-13 07:53

    I finally found the answer. To list all directories in a directory (e.g. D:\\, C:\\) on needs to first import the os module.

    import os
    

    Then, they need to say that they want to list everything. Within that, they need to make sure that the output is printed.

    for top, dirs, files in os.walk('D:\\'):
        for nm in files:       
            print os.path.join(top, nm)
    

    That was how I was able to solve it. Thanks to this.

    0 讨论(0)
  • 2021-01-13 07:58

    How about

    subprocess.call("dir/s", shell=True)
    

    Not verified.

    0 讨论(0)
  • 2021-01-13 08:04

    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:

    import fnmatch
    import os
    
    def recglob(directory, ext):
        l = []
        for root, dirnames, filenames in os.walk(directory):
            for filename in fnmatch.filter(filenames, ext):
                l.append(os.path.join(root, filename))
        return l
    
    0 讨论(0)
  • 2021-01-13 08:09

    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 the dir command is a shell builtin.

    import subprocess
    subprocess.call(["dir", "/s"], shell=True)
    

    But if you're trying to get a directory listing, make it OS independent by using the functions available in the os module such as os.listdir(), os.chdir()

    0 讨论(0)
  • 2021-01-13 08:09

    As it's an inbuilt part of the command line you need to run it as:

    import subprocess
    subprocess.call("cmd /c dir /s")
    
    0 讨论(0)
提交回复
热议问题