touch是一个Unix实用程序,它将文件的修改和访问时间设置为一天中的当前时间。如果该文件不存在,则使用默认权限创建该文件。

如何将其实现为Python函数?尽量跨平台和完整。

(目前谷歌的“python触摸文件”的结果不是很好,但指向os.utime。)


当前回答

看起来这是Python 3.4的新功能- pathlib。

from pathlib import Path

Path('path/to/file.txt').touch()

这将在该路径下创建一个file.txt文件。

--

路径。触摸(模式= 0 o777 exist_ok = True) 在这个给定的路径上创建一个文件。如果给出了mode,它将与进程的umask值相结合,以确定文件模式和访问标志。如果文件已经存在,则如果exist_ok为true(并且其修改时间更新为当前时间),则函数成功,否则将引发FileExistsError。

其他回答

创建一个包含所需变量的字符串,并将其传递给os.system似乎是合乎逻辑的:

touch = 'touch ' + dir + '/' + fileName
os.system(touch)

这在很多方面是不够的(例如,它不能处理空白),所以不要这样做。

一个更健壮的方法是使用subprocess:

子流程。([‘碰’,os.path打电话。加入(目录名,文件名)])

虽然这比使用subshell (os.system)要好得多,但它仍然只适用于快速和肮脏的脚本;使用跨平台程序的公认答案。

还有一个用于触摸的python模块

>>> from touch import touch
>>> touch(file_name)

你可以用pip install touch安装它

你为什么不试试: newfile.py

#!/usr/bin/env python
import sys
inputfile = sys.argv[1]

with open(inputfile, 'r+') as file:
    pass

Python newfile.py foobar.txt

or

使用子流程:

import subprocess
subprocess.call(["touch", "barfoo.txt"])

看起来这是Python 3.4的新功能- pathlib。

from pathlib import Path

Path('path/to/file.txt').touch()

这将在该路径下创建一个file.txt文件。

--

路径。触摸(模式= 0 o777 exist_ok = True) 在这个给定的路径上创建一个文件。如果给出了mode,它将与进程的umask值相结合,以确定文件模式和访问标志。如果文件已经存在,则如果exist_ok为true(并且其修改时间更新为当前时间),则函数成功,否则将引发FileExistsError。

Write_text()从pathlib。路径可以使用。

>>> from pathlib import Path
>>> Path('aa.txt').write_text("")
0