我想在 python 中创建一个空文件。
目前我正在使用open('FILENAME', 'a').close(),但我看到很多人使用os.mknod().
我做了一些研究,似乎os.mknod()使用了您正在使用的操作系统中的工具(因此它的库名称),这open()是创建空文件的“pythonic”方式。
这两种方法在速度和实现方面有什么区别?
您会推荐任何其他更可靠或更快速的方法来创建空文件吗?
目前我正在使用open('FILENAME', 'a').close(),但我看到很多人使用os.mknod().
我做了一些研究,似乎os.mknod()使用了您正在使用的操作系统中的工具(因此它的库名称),这open()是创建空文件的“pythonic”方式。
这两种方法在速度和实现方面有什么区别?
您会推荐任何其他更可靠或更快速的方法来创建空文件吗?
你可能想用这样的方法创建常规文件mknod:
os.mknod(path, mode=0o600 | stat.S_IFREG) # it seems that mode argument can be omitted for regular files
好吧,不要因为它不可移植(仅限 Unix)。尽可能坚持open(即使mknod在unix上创建文件时可能会在后台调用,性能差异很小)
您可以查看另一个问答(使用 mknod() 创建目录),其中的答案暗示os.mknod.
另一个可能的区别(没有检查这一点)是,如果文件已经存在,mknod可能会返回错误/异常,而open如果权限允许则愉快地打开文件。
不要忘记os包中的方法依赖于操作系统。使用它们有时会将您与您正在运行的系统联系起来(即使可以安全地假设os.remove并且os.rename可用,当然也存在实现差异)。
另请注意,open('FILENAME', 'a').close()不一定创建一个空文件。如果文件存在且权限正确,则它什么也不做(a用于append)。
open('FILENAME', 'w').close()open('FILENAME', mode='wb', buffering=0).close()os.open也是一种选择,因为它是较低级别的,并且在所有提供以下内容的 python 环境中都受支持open:os.close(os.open('FILENAME',os.O_CREAT|os.O_BINARY))