目录
如果要列出子目录而不是文件,请使用下面的方法。现在展示如何使用 os.listdir() 和 os.path() :
- import os
-
- basepath = '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 os
-
- basepath ='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 Path
-
- basepath = 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 os
-
- with 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 Path
-
- basepath = Path('my_directory')
-
- for entry in basepath.iterdir():
- info = entry.stat()
- print(info.st_mtime)
在上面的例子中,循环 .iterdir() 返回的迭代器并通过对其中每一项调用 .stat() 来获取文件属性。st_mtime 属性是一个浮点类型的值,表示的是时间戳。为了让 st_time 返回的值更容易阅读。