繁体   English   中英

用空格转换\\ x00

[英]Converting \x00 with a space

我通过以下方式读取/ proc // cmdline文件:

pfile = '/proc/%s/cmdline' % pid
if os.path.isfile(pfile):
    fh = open(pfile, 'r')
    pname = repr(fh.read())
    fh.close()

print pname

OUTPUT:

'myexe\x00arg\x00arg2'

如果我删除repr,则单词之间没有空格

'myexeargarg2'

所以我将其更改为

' '.join(fh.read().split('\x00'))

然后,我得到:

'myexe arg arg2'

只想知道是否还有其他方法可以将\\ x00转换为空格?

如果您查找ASCII表,将会看到\\x00是NULL字符。 当您打印内容时,会在其上调用str ,这会尝试创建数据的可打印版本,并且无法打印无法打印的字符。 您可以通过查看string.printable来查看哪些字符是可打印的:

import string
if '\x00' in string.printable:
    print "printable"
else:
    print "unprintable"

运行此命令时,您将看到此输出“不可打印”。

但是repr尝试生成可以重新创建原始数据的内容,因此\\x00必须在此处可见,因为重新创建原始数据是必需的。

如果要在\\x00位置获得空格,则只需用fh.replace('\\x00', ' ') replace空格fh.replace('\\x00', ' ')

这里有一个简短的示例,可以帮助您回答问题。

content = b'cmd\x00arg1\x00arg2\x00'
print(content.replace("\x00", " "))

它将代替这里解释的发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM