不可能很难,但我有精神障碍。
答案 0 :(得分:212)
import os
os.listdir("path") # returns list
答案 1 :(得分:46)
一种方式:
import os
os.listdir("/home/username/www/")
glob.glob("/home/username/www/*")
上面的glob.glob
方法不会列出隐藏文件。
自从我几年前最初回答这个问题以来,pathlib已被添加到Python中。我现在列出目录的首选方法通常是iterdir
对象上的Path
方法:
from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")
答案 2 :(得分:33)
os.walk
:
import os
start_path = '.' # current directory
for path,dirs,files in os.walk(start_path):
for filename in files:
print os.path.join(path,filename)
答案 3 :(得分:17)
glob.glob
或os.listdir
会这样做。
答案 4 :(得分:12)
os
module处理所有这些事情。
os.listdir(path)
返回一个列表,其中包含path给出的目录中的条目名称。 该列表按任意顺序排列。它不包括特殊条目'。'和 '..'即使它们出现在目录中。
可用性:Unix,Windows。
答案 5 :(得分:2)
在Python 3.4+中,您可以使用新的pathlib
包:
from pathlib import Path
for path in Path('.').iterdir():
print(path)
Path.iterdir()
返回一个迭代器,可以很容易地变成list
:
contents = list(Path('.').iterdir())
答案 6 :(得分:2)
从Python 3.5开始,您可以使用os.scandir
。
区别在于它返回文件 entries 而不是名称。在Windows等某些操作系统上,这意味着您不必os.path.isdir/file
来了解它是否是文件,并且可以节省CPU时间,因为在Windows中扫描目录时stat
已经完成:< / p>
列出目录并打印大于max_value
字节的文件的示例:
for dentry in os.scandir("/path/to/dir"):
if dentry.stat().st_size > max_value:
print("{} is biiiig".format(dentry.name))
(阅读我的here基于性能的详尽解答)
答案 7 :(得分:1)
下面的代码将列出目录和目录中的文件。另一个是os.walk
def print_directory_contents(sPath):
import os
for sChild in os.listdir(sPath):
sChildPath = os.path.join(sPath,sChild)
if os.path.isdir(sChildPath):
print_directory_contents(sChildPath)
else:
print(sChildPath)