我正在尝试提取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)
的语法错误。我暗示自己做错了什么?
代码:
import os
import time
cwd = os.getcwd()
(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(file)
timestr = time.strftime("%Y%m%d_%H%M%S")
files = open(cwd)
files = [f for f in os.listdir(cwd) if os.path.isfile(f)]
for f in files:
print("created: %s" % time.ctime(os.path.getctime(file) timestr))
print("last modified: %s" % time.mtime(os.path.getmtime(file) timestr))
答案 0 :(得分:1)
print("created: %s" % time.ctime(os.path.getctime(file) timestr))
如果你希望timestr成为ctime的第二个参数,你需要一个,
逗号。但它只需要一个论点。
表示自1970年以来的秒数的标量数值与datetime之间存在差异。看起来您想将getctime()结果传递给utcfromtimestamp()。然后你将拥有一个可以调用strftime()的对象,它将接受timestr作为参数。
答案 1 :(得分:1)
我遇到了与你相同的错误。首先,我必须在定义“文件”之后移动第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)
然而,看到你的第一个发布的例子,我想我可以修改它以匹配它。这就是我想出的:
import glob
import time
import os
files = glob.glob('*.*')
print(' created modified 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=' ')
print(file)
运行它给了我:
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或任何您想要的内容。这个脚本可以获取所有内容,如果它不是图像,则会打印出失败的内容。