从文件中提取所有日期时间戳(修改、创建、EXIF日期等)

2024-10-01 07:50:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试提取CWD中所有文件的所有可用日期和时间戳。在

例如YYYYMMDD_HHMMSS(即使输出不是很好):

lastwritetime     creationtime      datetakentime
20171124_190646   20171124_190646   20171124_190646   file1.txt
20171124_190646   20171124_190646   20171124_190646   file2.txt
20171124_190646   20171124_190646   20171124_190646   file3.txt

我得到(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(file)的语法错误。我做错什么了吗?在

代码:

^{pr2}$

Tags: 文件devtxtmode时间file1file2ino
2条回答
    print("created: %s" % time.ctime(os.path.getctime(file) timestr))

如果希望timestr成为ctime的第二个参数,则需要一个,逗号。但这只需要一个论点。在

表示1970年以来秒数的标量数值与datetime之间存在差异。看起来您希望将getctime()结果传递给utcfromtimestamp()。然后将有一个可以调用strftime()的对象,该对象将接受timestr作为参数。在

我也犯了和你一样的错误。首先,我必须在定义“file”之后移动第4行,在本例中是“f”。然后,第二个错误是print命令的语法。如果在timestr之前加一个逗号,它应该打印得很好。第三个问题是我的权限被拒绝了,显然是因为我试图打开整个目录。在

我把你的一些剧本改写成了我认为更适合你需要的东西。在

import glob
import time
import os

timestr = time.strftime("%Y%m%d_%H%M%S")
files = glob.glob('*.*')

for file in files:
    print('created: %s' % time.ctime(os.path.getctime(file)), timestr)
    print('last modified: %s' % time.ctime(os.path.getmtime(file)), timestr)

但是,看到您发布的第一个示例,我想我可以修改它来匹配它。我想到的是:

^{pr2}$

运行它给了我:

    created           modified        file_name
20170723_223307   20170723_223307   36e73b41-4366-4bf8-825f-9f16e41b1b41.tmp
20160928_232029   20171116_081039   desktop.ini
20171124_215147   20171124_215413   help.py
20171124_215637   20171124_221613   help2.py
20171124_214353   20171124_214353   test.txt

现在,您只需将参数设置在正确的位置,并配置打印命令以满足您的确切需要。在

编辑:对于提取EXIF数据的请求,代码如下所示。请原谅这个空白。在

import glob
import time
import os
from PIL import Image

files = glob.glob('*.*')

print('      created               modified                EXIF            file_name')
for file in files:
    print('%s' % time.strftime("%Y:%m:%d %H:%M:%S", time.gmtime(os.path.getctime(file))), end='   ')
    print('%s' % time.strftime("%Y:%m:%d %H:%M:%S", time.gmtime(os.path.getmtime(file))), end='   ')
    try:
        print('%s' % Image.open(file)._getexif()[36867], end='   ')
    except:
        print('Not an image', end='          ')
    print(file)

请记住,您可以调整glob以仅获取jpg、png或任何您想要的内容。这个脚本获取所有内容,如果不是图像,它只会打印出失败的结果。在

相关问题 更多 >