[英]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.