使用python创建空文件

我想使用python创建一个路径为x的文件。我一直在使用os.system(y),其中y = 'touch %s' % (x)。我一直在寻找os.mkdir的非目录版本,但我没有找到任何东西。有没有这样的工具来创建一个文件而不打开它,或使用系统或popen/subprocess?

468766 次浏览

os.mknod("newfile.txt") (但它需要OSX上的根权限)。创建文件的系统调用实际上是带有O_CREAT标志的open()。所以无论如何,你总是会打开文件。

所以简单地创建一个文件而不截断它的最简单的方法是这样的:

open(x, 'a').close()

实际上你可以省略.close(),因为CPython的refcounting GC会在open()语句结束后立即关闭它——但显式地这样做更干净,而且依赖于CPython特定的行为也不好。

如果你想要touch的行为(即在文件存在的情况下更新mtime):

import os
def touch(path):
with open(path, 'a'):
os.utime(path, None)

你可以扩展它来创建路径中不存在的任何目录:

basedir = os.path.dirname(path)
if not os.path.exists(basedir):
os.makedirs(basedir)

当然,有一种方法可以在不打开的情况下创建文件。这就像调用os.mknod("newfile.txt")一样简单。唯一的缺点是这个调用需要OSX上的根权限。