我通过以下方式阅读/ proc // cmdline文件:
pfile = '/proc/%s/cmdline' % pid
if os.path.isfile(pfile):
fh = open(pfile, 'r')
pname = repr(fh.read())
fh.close()
print pname
输出:
'myexe\x00arg\x00arg2'
如果我删除了repr,则单词之间没有空格
'myexeargarg2'
所以我把它改成了
' '.join(fh.read().split('\x00'))
然后,我得到了:
'myexe arg arg2'
只是想知道是否还有其他方法可以将\ x00转换为空格?
答案 0 :(得分:3)
如果查找ASCII表,您将看到\x00
是NULL字符。当您打印某个str
时,会尝试创建一个可打印版本的数据,并且打印不可打印的字符。通过查看string.printable
:
import string
if '\x00' in string.printable:
print "printable"
else:
print "unprintable"
当您run this时,您会看到此输出"无法打印"。
但是repr
尝试生成可以重新创建原始数据的内容,因此\x00
需要在那里可见,因为需要重新创建原始数据。
如果您想在\x00
的任何地方获取空间,只需replace
使用fh.replace('\x00', ' ')
的空格即可获得空格。
答案 1 :(得分:1)