Nev*_*DNZ 3 python linux append
如果以下多个(示例)程序同时运行,则需要采取哪些步骤来确保始终将"完整"行正确附加到文件末尾.
#!/usr/bin/env python
import random
passwd_text=open("passwd.txt","a+")
u=("jsmith:x:1001:1000:Joe Smith,Room 1007,(234)555-8917,(234)555-0077,jsmith@rosettacode.org:/home/jsmith:/bin/sh",
"jdoe:x:1002:1000:Jane Doe,Room 1004,(234)555-8914,(234)555-0044,jdoe@rosettacode.org:/home/jdoe:/bin/sh",
"xyz:x:1003:1000:X Yz,Room 1003,(234)555-8913,(234)555-0033,xyz@rosettacode.org:/home/xyz:/bin/sh")
for i in range(random.randint(1,2)):
print >> passwd_text, random.choice(u)
passwd_text.close()
Run Code Online (Sandbox Code Playgroud)
并且:即使磁盘已满,或者"ulimit -f"已设置,是否可以保证"全部或全部"附加(在linux/unix上)?
(请注意类似的问题:如何附加到文件?)
我认为在python的正常函数中对这个"bug"的讨论open表明你没有获得POSIX原子保证,但如果你使用
with io.open('myfile', 'a') as f:
f.write('stuff')
Run Code Online (Sandbox Code Playgroud)
http://docs.python.org/2/library/io.html#io.open
如果操作系统正确实现其write sys调用...
http://bugs.python.org/issue15723