2017-02-18 223 views
1

我有这个代码从python运行minecraft服务器并在命令行中打印所有内容。然而,在每一行的结尾打印“\ r \ n”,我不希望它,有什么办法摆脱它?Python如何不打印 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

您可以编写直接标准输出:

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. 

您还可以解析行,然后打印每一行,而无需lin e断路器:

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

希望这是你想要的。

+0

不要忘了'sys.stdout.flush()' –

+0

我不希望它在同一行上打印,我希望它打印多行,但事情是,它是在每行的末尾添加“\ r \ n”,我不想要那个 –

+0

@JC我认为\ r是反复出现的,\ n是换行符。那么如果你没有一个人在行的末尾会发生什么? – Mai

2

使用

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

或者

print(output_line.rstrip()) 
+0

python 2:打印'我的世界服务器',#注意到最后的逗号 – MosheZada

+0

我假设你的意思是print(output_line,end =“”),那没用,程序没有打印任何东西 –

+0

工作? @ J.C。 –