Python如何不打印\ r和\ n

时间:2017-02-18 09:42:11

标签: python

我有这个代码从python运行一个minecraft服务器并在命令行中打印所有内容。但是,在每一行的末尾打印“\ r \ n”并且我不想要它,有没有办法摆脱它?

import subprocess

def run_command(command):
    p = subprocess.Popen(command,
                     stdout=subprocess.PIPE,
                     stderr=subprocess.STDOUT)
    return iter(p.stdout.readline, b'')

for output_line in run_command('java -Xmx2048M -Xms2048M -jar minecraft_server.jar nogui'):
    print(output_line)

2 个答案:

答案 0 :(得分:3)

您可以直接写信给stdout:

import sys
sys.stdout.write("Hello world!")
sys.stdout.write(" I'm superman :D")

以上代码应打印在同一行

根据要求,OP似乎想要打印一个嵌入了断路器的长串,但不希望断路器有效。

假设我有一个包含两行的文本文件

Hey line 1!
I'm line 2.

以下代码将打印两条没有断路器的线路,用空格替换断路器:

txt = ''
with open('somename.txt', 'r') as f:
    txt = f.read().replace('\r\n', ' ')
    txt = txt.replace('\n\r', ' ')
    txt = txt.replace('\n', ' ')
    txt = txt.replace('\r', ' ')
print txt

也就是说,它会打印

Hey line 1! I'm line 2.

您也可以解析线条,然后打印每一行没有断路器:

for line in f:
     sys.stdout.write(line.strip() + ' ')

希望这就是你想要的。

答案 1 :(得分:2)

使用

print('Minecraft server', end="")

或者

print(output_line.rstrip())