touch
是一个 Unix 实用程序,可将文件的修改和访问时间设置为当前时间。如果该文件不存在,则使用默认权限创建它。
您将如何将其实现为 Python 函数?尝试跨平台和完整。
(当前“python touch file”的谷歌搜索结果不是很好,但指向 os.utime 。)
原文由 itsadok 发布,翻译遵循 CC BY-SA 4.0 许可协议
这试图比其他解决方案更加无竞争。 ( with
关键字是 Python 2.5 中的新关键字。)
import os
def touch(fname, times=None):
with open(fname, 'a'):
os.utime(fname, times)
大致相当于这个。
import os
def touch(fname, times=None):
fhandle = open(fname, 'a')
try:
os.utime(fname, times)
finally:
fhandle.close()
现在,要真正使其无竞争,您需要使用 futimes
并更改打开文件句柄的时间戳,而不是打开文件然后更改文件名上的时间戳(可能已重命名) .不幸的是,Python 似乎没有提供一种方法来调用 futimes
而不通过 ctypes
或类似的…
编辑
正如 Nate Parsons 所指出的,Python 3.3 将向诸如 os.utime
之类的函数 添加 指定文件描述符(当 os.supports_fd
时),它将使用 futimes
utimes
引擎盖下的系统调用。换一种说法:
import os
def touch(fname, mode=0o666, dir_fd=None, **kwargs):
flags = os.O_CREAT | os.O_APPEND
with os.fdopen(os.open(fname, flags=flags, mode=mode, dir_fd=dir_fd)) as f:
os.utime(f.fileno() if os.utime in os.supports_fd else fname,
dir_fd=None if os.supports_fd else dir_fd, **kwargs)
原文由 ephemient 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
看起来这是 Python 3.4 的新功能 -
pathlib
。这将在路径中创建一个
file.txt
。–