要在Unix上用Python创建空文件,请执行以下操作:import os
try:
os.close(os.open('abc', os.O_WRONLY | os.O_CREAT | os.O_EXCL |
getattr(os, "O_CLOEXEC", 0) |
os.O_NONBLOCK | os.O_NOCTTY))
except OSError:
pass # decide what to consider an error in your case and reraise
# 1. is it an error if 'abc' entry already exists?
# 2. is it an error if 'abc' is a directory or a symlink to a directory?
# 3. is it an error if 'abc' is a named pipe?
# 4. it is probably an error if the parent directory is not writable
# or the filesystem is read-only (can't create a file)
或更多便携式变体:try:
open('abc', 'ab', 0).close()
except OSError:
pass # see the comment above
如果没有显式的.close()调用,非引用计数的Python实现(如Pypy、Jython)可能会延迟关闭文件,直到运行垃圾收集(它可能会耗尽进程的可用文件描述符)。
后一个例子可能卡在FIFO上,并遵循符号链接。在我的系统中,它相当于:from os import *
open("abc", O_WRONLY|O_CREAT|O_APPEND|O_CLOEXEC, 0666)
此外,touch命令将现有文件的访问和修改时间更新为当前时间。