如何读取目录中的文件属性?

Bdf*_*dfy 11 python file

例如,

import os
print os.listdir()
Run Code Online (Sandbox Code Playgroud)

列出目录中的文件.

如何获取目录中所有文件的文件修改时间?

Mar*_*ers 38

在查找目录中所有文件的文件属性时,如果您使用的是Python 3.5或更高版本,请使用该os.scandir()函数获取包含文件属性的目录列表.这可能比使用os.listdir()然后单独检索文件属性更有效:

import os

with os.scandir() as dir_entries:
    for entry in dir_entries:
        info = entry.stat()
        print(info.st_mtime)
Run Code Online (Sandbox Code Playgroud)

DirEntry.stat()功能在Windows上使用时,不必进行任何其他系统调用,文件修改时间已经可用.数据被缓存,因此额外的entry.stat()调用不会进行额外的系统调用.

您还可以使用pathlib模块面向对象的实例来实现相同的目标:

from pathlib import Path

for path in Path('.').iterdir():
    info = path.stat()
    print(info.st_mtime)
Run Code Online (Sandbox Code Playgroud)

在早期的Python版本中,您可以使用该os.stat调用来获取文件属性,例如修改时间.

import os

for filename in os.listdir():
    info = os.stat(filename)
    print(info.st_mtime)
Run Code Online (Sandbox Code Playgroud)

st_mtime是python 2.5及更高版本的浮点值,表示自纪元以来的秒数; 使用timedatetime模块来解释这些用于显示目的或类似目的.

请注意,值的精度取决于您使用的操作系统:

st_atime,st_mtime和st_ctime属性的确切含义和解析取决于操作系统和文件系统.例如,在使用FAT或FAT32文件系统的Windows系统上,st_mtime具有2秒的分辨率,st_atime只有1天的分辨率.有关详细信息,请参阅操作系统文档

如果您所做的只是获得修改时间,那么该os.path.getmtime方法是一个方便的快捷方式; 它使用os.stat引擎盖下的方法.

但请注意,os.stat调用相对较贵(文件系统访问),因此如果您对大量文件执行此操作,并且每个文件需要多个数据点,则最好使用os.stat并重用返回的信息而不是使用os.path便利方法,os.stat每个文件将被调用多次.


Ned*_*der 5

如果您只想要修改时间,那么我们os.path.getmtime(filename)会为您提供。如果您使用listdir参数,则还需要使用os.path.join

import os, os.path

for filename in os.listdir(SOME_DIR):
    print os.path.getmtime(os.path.join(SOME_DIR, filename))
Run Code Online (Sandbox Code Playgroud)