使用python创建空文件

时间:2012-09-29 17:22:02

标签: python

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

2 个答案:

答案 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权限。