使用sp转换\x00

2024-04-24 23:20:48 发布

您现在位置:Python中文网/ 问答频道 /正文

Im正在通过以下方式读取/proc//cmdline文件:

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

print pname

输出:

^{pr2}$

如果我去掉repr,单词之间就没有空格了

'myexeargarg2'

所以我改成了

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

然后,我得到:

'myexe arg arg2'

不知道有没有其他方法可以把\x00转换成一个空间?在


Tags: 文件pathreadifos方式procpid
2条回答

如果您查找ASCII表,您将看到\x00是空字符。当您打印某些内容时,str会被调用,它试图创建数据的可打印版本,不可打印字符不会被打印。通过查看^{},可以查看哪些字符是可打印的:

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

{输出}当你看到这个^不可打印}。在

但是,repr试图生成可以重新创建原始数据的内容,因此{}必须在那里可见,因为这是重新创建原始数据所必需的。在

如果你想在任何你有\x00的地方得到空间,你只需要用一个fh.replace('\x00', ' ')的空间来^{

这里有一个简短的例子,可以帮助你回答你的问题。在

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

它将替换出现的事件作为解释here。在

相关问题 更多 >