我有这个代码从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)
答案 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())