import subprocess
cmd = 'tasklist'
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
file = open("Process_list.txt", "r+")
for line in proc.stdout:
file.write(str(line))
file.close()
我刚刚将保存进程列表写入文本文件。但Process_list.txt文件有很多换行符,如\ r \ n。我怎么能删除它?
之前我使用了replace和strip func答案 0 :(得分:3)
问题可能不是replac
或strip
ping额外字符,而是关于运行subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
时返回的内容。后者实际上返回bytes
,这可能不会很好地将每行写入文件。在使用以下内容将行写入文件之前,您应该能够将bytes
转换为string
:
import subprocess
cmd = 'tasklist'
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
file = open("Process_list.txt", "r+")
for line in proc.stdout:
file.write(line.decode('ascii')) # to have each output in one line
file.close()
如果您不希望每行输出一行,则可以使用file.write(line.decode('ascii').strip())
删除换行符。
此外,您实际上可以使用subprocess.getoutput
来获取字符串字符的输出并将输出保存到您的文件中:
cmd = 'tasklist'
proc = subprocess.getoutput(cmd)
file.write(proc)
file.close()
我希望这证明有用。
答案 1 :(得分:1)
您确实会再次使用strip()
:
In [1]: 'foo\r\n'.strip()
Out[1]: 'foo'
在你的情况下:
file.write(str(line).strip())
您也可以使用close()
来避免with
您的文件:
with open("Process_list.txt", "r+") as file:
for line in proc.stdout:
file.write(str(line).strip())
另请注意,只有str()
line
不是字符串才需要window.eval()
。
答案 2 :(得分:1)
也许您正在寻找str.rstrip()。它删除尾随换行符和回车符;但是,它也会删除所有尾随空格,所以要注意这一点。