我想使用python创建一个路径为x
的文件。我一直在使用os.system(y)
y = 'touch %s' % (x)
。我找了os.mkdir
的非目录版本,但我找不到任何东西。是否有这样的工具来创建文件而不打开它,或使用系统或popen / subprocess?
答案 0 :(得分:383)
没有打开文件就无法创建文件有os.mknod("newfile.txt")
(但它需要OSX上的root权限)。创建文件的系统调用实际上是open()
,带有O_CREAT
标志。所以无论如何,你总是打开文件。
因此,简单地创建文件而不截断文件的最简单方法是:
open(x, 'a').close()
实际上你可以省略.close()
,因为CPython的引用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)
答案 1 :(得分:39)
当然有一种方法可以在不打开的情况下创建文件。它就像调用os.mknod("newfile.txt")
一样简单。唯一的缺点是此调用需要OSX上的root权限。