在Linux和Windows上获得文件创建和修改日期/时间的最佳跨平台方法是什么?
当前回答
操作系统。Stat包含了创建时间。os.stat()中包含时间的元素没有st_anything的定义。
所以试试这个:
os.stat('feedparser.py')[8]
将其与ls -lah文件上的创建日期进行比较
它们应该是一样的。
其他回答
有两个方法可以获得mod时间,os.path.getmtime()或os.stat(),但ctime跨平台不可靠(见下文)。
os.path.getmtime()
getmtime(路径) 返回最后一次修改路径的时间。返回值是一个给出 自epoch开始的秒数(请参阅time模块)。提高操作系统。如果文件存在,则错误 不存在或无法访问。1.5.2新版功能。在2.3版更改:如果 os.stat_float_times()返回True,结果是一个浮点数。
os.stat()
stat(path) Perform a stat() system call on the given path. The return value is an object whose attributes correspond to the members of the stat structure, namely: st_mode (protection bits), st_ino (inode number), st_dev (device), st_nlink (number of hard links), st_uid (user ID of owner), st_gid (group ID of owner), st_size (size of file, in bytes), st_atime (time of most recent access), st_mtime (time of most recent content modification), st_ctime (platform dependent; time of most recent metadata change on Unix, or the time of creation on Windows):
>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
(33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
>>> statinfo.st_size
926L
>>>
在上面的例子中,您将使用statinfo。St_mtime或statinfo。St_ctime分别获取mtime和ctime。
你有几个选择。首先,你可以使用os.path.getmtime和os.path.getctime函数:
import os.path, time
print("last modified: %s" % time.ctime(os.path.getmtime(file)))
print("created: %s" % time.ctime(os.path.getctime(file)))
你的其他选择是使用os.stat:
import os, time
(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(file)
print("last modified: %s" % time.ctime(mtime))
注意:ctime()不是指*nix系统上的创建时间,而是指inode数据最后一次更改的时间。(感谢kojiro在评论中提供了一个有趣的博客文章链接,使这一事实更加明确。)
可能值得一看crtime库,它实现了对文件创建时间的跨平台访问。
from crtime import get_crtimes_in_dir
for fname, date in get_crtimes_in_dir(".", raise_on_error=True, as_epoch=False):
print(fname, date)
# file_a.py Mon Mar 18 20:51:18 CET 2019
如果下列符号链接不重要,也可以使用操作系统。lstat内置命令。
>>> os.lstat("2048.py")
posix.stat_result(st_mode=33188, st_ino=4172202, st_dev=16777218L, st_nlink=1, st_uid=501, st_gid=20, st_size=2078, st_atime=1423378041, st_mtime=1423377552, st_ctime=1423377553)
>>> os.lstat("2048.py").st_atime
1423378041.0
操作系统。Stat包含了创建时间。os.stat()中包含时间的元素没有st_anything的定义。
所以试试这个:
os.stat('feedparser.py')[8]
将其与ls -lah文件上的创建日期进行比较
它们应该是一样的。
推荐文章
- Numpy Max vs amax vs maximum
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 每n行有熊猫
- 实例属性attribute_name定义在__init__之外
- 如何获取在Python中捕获的异常的名称?
- 第一次出现的值大于现有值的Numpy
- 如何从Python函数中返回两个值?
- 前一个月的Python日期
- Python中方括号括起来的列表和圆括号括起来的列表有什么区别?
- Python日志记录不输出任何东西
- 每n秒运行特定代码
- SQLAlchemy是否有与Django的get_or_create等价的函数?
- 如何将python datetime转换为字符串,具有可读格式的日期?
- 美丽的汤和提取div及其内容的ID
- 在Python中重置生成器对象