2017-02-18 6 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

あなたが直接stdoutに書き込むことができます:OPが長い文字列を印刷したいよう

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

要求として上記のコードは、同じ行


に印刷する必要があり、それはそうですラインブレーカは組み込まれていますが、ラインブレーカを有効にすることは望ましくありません。

のは、私は2つのライン

Hey line 1! 
I'm line 2. 

次のコードは、スペースでラインブレーカーを交換し、ラインブレーカーなしの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を使わずに各行を印刷することもできますブレーカ:

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: 'Minecraft server'を印刷し、最後にコンマを気付く – MosheZada

+0

印刷を意味すると思いますが(output_line、end = "")、動作しなかった、プログラムは何も印刷しませんでした –

+0

作業? @ J.C。 –

関連する問題