目录
列出子目录
获取文件属性
列出子目录
如果要列出子目录而不是文件,请使用下面的方法。现在展示如何使用 os.listdir() 和 os.path() :
import osbasepath = 'my_directory'for entry in os.listdir(basepath):if os.path.isdir(os.path.join(basepath,entry)): # os.path.isdir 判断是否是目录print(entry)'''
shell1
shell2'''
当多次调用 os.path.join() 时,以这种方式操作文件系统就会变得很笨重。
下面是如何使用 os.scandir() :
import osbasepath ='my_directory'
with os.scandir(basepath) as entries:for entry in entries:if entry.is_dir():print(entry.name)
与文件列表中的示例一样,此处在 os.scandir() 返回的每一项上调用 .is_dir() 。如果这项是目录,则 is_dir() 返回 True,并打印出目录的名称。输出结果和上面相同。
下面是如何使用 pathlib.Path() :
from pathlib import Pathbasepath = Path('my_directory')for entry in basepath.iterdir():if entry.is_dir():print(entry.name)'''
shell1
shell2
'''
在 .iterdir() 迭代器返回的每一项上调用 is_dir() 检查是文件还是目录。如果该项是目录,则打印其名称,并且生成的输出与上一示例中的输出相同。
获取文件属性
Python可以很轻松的获取文件大小和修改时间等文件属性。可以通过使用 os.stat() , os.scandir() 或 pathlib.Path 来获取。
os.scandir() 和 pathlib.Path() 能直接获取到包含文件属性的目录列表。这可能比使用 os.listdir() 列出文件然后获取每个文件的文件属性信息更加有效。
下面的例子显示了如何获取 my_directory 中文件的最后修改时间。以时间戳的方式输出:
import oswith os.scandir('my_directory') as entries:for entry in entries:info = entry.stat()print(info.st_mtime)
os.scandir() 返回一个 ScandirIterator 对象。ScandirIterator 对象中的每一项有 .stat() 方法能获取关于它指向文件或目录的信息。.stat() 提供了例如文件大小和最后修改时间的信息。在上面的示例中,代码打印了 st_time 属性,该属性是上次修改文件内容的时间。
pathlib** 模块具有相应的方法,用于获取相同结果的文件信息:**
from pathlib import Pathbasepath = Path('my_directory')for entry in basepath.iterdir():info = entry.stat()print(info.st_mtime)
在上面的例子中,循环 .iterdir() 返回的迭代器并通过对其中每一项调用 .stat() 来获取文件属性。st_mtime 属性是一个浮点类型的值,表示的是时间戳。为了让 st_time 返回的值更容易阅读。