我想x
使用 python 创建一个带有路径的文件。我一直在使用os.system(y)
where y = 'touch %s' % (x)
。我一直在寻找 的非目录版本os.mkdir
,但我找不到任何东西。是否有这样的工具可以在不打开文件或使用系统或 popen/子进程的情况下创建文件?
问问题
445017 次
2 回答
539
没有打开文件就无法创建文件有os.mknod("newfile.txt")
(但它需要 OSX 上的 root 权限)。创建文件的系统调用实际上是open()
带有O_CREAT
标志的。因此,无论如何,您将始终打开文件。
因此,简单地创建一个文件而不截断它以防万一它存在的最简单方法是:
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)
于 2012-09-29T17:25:22.423 回答
59
当然,有一种无需打开即可创建文件的方法。就像打电话一样简单os.mknod("newfile.txt")
。唯一的缺点是这个调用需要 OSX 上的 root 权限。
于 2015-08-02T15:00:33.793 回答