Dan*_*iel 1 python linux binaryfiles file
我同时使用多个进程操作txt文件(一些r/w操作).我看到了特殊标志的痕迹^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @偶尔在某些行上传播.这表明了什么?在什么情况下会出现这些符号.这是否意味着某些二进制内容被错误地写入了应该是文本的位置?
更新 我阅读了文档.有人认为这是由于linux/windows平台上的换行问题,而其他人则认为这是因为网络环境中的大端/小端.事实是我在网络文件系统中运行多个进程并操纵一个常见的txt文件.所以我猜编码格式可能是主要原因.谁可以建议如何避免这个问题?我不想编辑文件(比如手动进行文本替换).生成没有任何空字符的正确文件的简洁方法是首选.
UPDATE2 这是实现我的项目的python伪代码.fcntl.lockf就是将公共被操作文件锁定在多个运行多个进程的机器上.
while(manipulatedfile size is not 0):
open(manipulatedfile, 'r+') as fh:
fcntl.lockf(fh, fcntl.LOCK_EX)
all_lines = fh.readlines()
listing=all_lines[0:50] #get the first 50 lines
rest_lines = all_lines[50:] # get remaining lines
fh.seek(0)
fh.truncate()
fh.writelines(rest_lines) # write remaining lines back to file
fcntl.lockf(fh, fcntl.LOCK_UN)
listing = map(lambda s:s.strip(), listing)
do_sth(listing)
Run Code Online (Sandbox Code Playgroud)
谢谢