Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ^@sign-in.txt文件有什么建议_Python_Linux_File_Binaryfiles - Fatal编程技术网

Python ^@sign-in.txt文件有什么建议

Python ^@sign-in.txt文件有什么建议,python,linux,file,binaryfiles,Python,Linux,File,Binaryfiles,我同时操作了一个包含多个进程的txt文件(一些r/w操作)。我看到一些特殊的迹象,如^^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^。这意味着什么?在什么情况下这些符号会出现。这是否意味着某些二进制内容被错误地写入了应该是文

我同时操作了一个包含多个进程的txt文件(一些r/w操作)。我看到一些特殊的迹象,如^^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^。这意味着什么?在什么情况下这些符号会出现。这是否意味着某些二进制内容被错误地写入了应该是文本的位置

更新 我通读了文件。有人认为这是因为linux/windows平台上的新行问题,而其他人则认为这是因为网络环境中的big-endian/small-endian。事实上,我在一个联网的文件系统中运行多个进程,并操作一个常见的txt文件。所以我想编码格式可能是主要原因。有谁能建议如何避免这个问题?我不想编辑文件(比如手动执行文本替换)。最好使用不带任何空字符的干净方法生成正确的文件

更新2 这是实现我的项目的python伪代码。lock的作用是在运行多个进程的多台计算机上锁定公共操纵文件

 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)

谢谢

在ASCII中,
^@
是二进制零(
NUL
)字符

在每个ASCII字符之间包含
^@
的数据有时会被错误地从Unicode(4字节到一个字符)转换为ASCII(1字节到一个字符),反之亦然

要删除
^@
字符,请运行
vi file.txt
,然后输入
:%s/
Ctrl+V Ctrl+@
//g
,然后点击↵ 返回


有关详细信息,请参阅。

在ASCII中,
^@
是二进制零(
NUL
)字符

在每个ASCII字符之间包含
^@
的数据有时会被错误地从Unicode(4字节到一个字符)转换为ASCII(1字节到一个字符),反之亦然

要删除
^@
字符,请运行
vi file.txt
,然后输入
:%s/
Ctrl+V Ctrl+@
//g
,然后点击↵ 返回

有关详细信息,请参阅。

这些是空字符,包含空字符。空字符(或NUL char)的ASCII码为0,在
vi
less
中查看时显示为
^@

我通常在磁盘空间快用完并且进程试图写入日志文件时看到这些文件。

这些文件是空字符,并且包含空字符。空字符(或NUL char)的ASCII码为0,在
vi
less
中查看时显示为
^@


我通常在磁盘空间快用完且进程试图写入日志文件时看到这些内容。

有没有一种方法可以让我在不考虑字词之间的^@符号的情况下读取这些行?假设一句话是“Hello^@^@wor^@ld”。是否可以通过编程方式从中提取“hello world”?。是否将以二进制模式帮助打开文件?是否有一种方法可以读取行,而不考虑单词之间的^@符号?假设一句话是“Hello^@^@wor^@ld”。是否可以通过编程方式从中提取“hello world”?。是否将文件作为二进制模式帮助打开?是否有更干净的方法避免空字符。我在一个进程内读/写文件。因此,打开vi并不优雅,因此需要重新替换。首先,我如何避免生成空字符?@Daniel你是如何处理文件的?什么语言等?有没有更干净的方法来避免空字符。我在一个进程内读/写文件。因此,打开vi并不优雅,因此需要重新替换。首先,我如何避免生成空字符?@Daniel你是如何处理文件的?什么语言等?