2024-04-19 12:35:41 发布
网友
我想用python创建一个路径为x的文件。我一直在使用os.system(y),其中y = 'touch %s' % (x)。我找了一个os.mkdir的非目录版本,但是找不到任何东西。有没有这样的工具可以在不打开文件的情况下创建文件,或者使用系统或popen/subprocess?
x
os.system(y)
y = 'touch %s' % (x)
os.mkdir
不打开文件就无法创建文件存在os.mknod("newfile.txt")(但它需要OSX上的根权限)。创建文件的系统调用实际上是带有O_CREAT标志的open()。所以不管怎样,你都会打开文件。
os.mknod("newfile.txt")
O_CREAT
open()
因此,简单地创建一个文件而不在文件存在时截断它的最简单方法是:
open(x, 'a').close()
实际上,您可以省略.close(),因为CPython的refcounting GC将在open()语句完成后立即关闭它——但是,明确地执行它比较干净,并且依赖CPython特定的行为也不好。
.close()
如果您想要touch的行为(即,如果文件存在,请更新mtime):
touch
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上的根权限。
不打开文件就无法创建文件存在os.mknod("newfile.txt")
(但它需要OSX上的根权限)。创建文件的系统调用实际上是带有O_CREAT
标志的open()
。所以不管怎样,你都会打开文件。因此,简单地创建一个文件而不在文件存在时截断它的最简单方法是:
实际上,您可以省略
.close()
,因为CPython的refcounting GC将在open()
语句完成后立即关闭它——但是,明确地执行它比较干净,并且依赖CPython特定的行为也不好。如果您想要
touch
的行为(即,如果文件存在,请更新mtime):您可以扩展此选项,以便在路径中创建不存在的任何目录:
当然,有一种方法可以在不打开的情况下创建文件。这和调用
os.mknod("newfile.txt")
一样简单。唯一的缺点是,这个调用需要OSX上的根权限。相关问题 更多 >
编程相关推荐