目录
列出子目录
获取文件属性
列出子目录
如果要列出子目录而不是文件,请使用下面的方法。现在展示如何使用 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
返回的值更容易阅读。