如何删除文本文件中的换行符?

时间:2017-01-06 02:51:43

标签: python file-io linefeed

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

3 个答案:

答案 0 :(得分:3)

问题可能不是replacstrip 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()。它删除尾随换行符和回车符;但是,它也会删除所有尾随空格,所以要注意这一点。