キャリッジリターン「\ r」から「\ n」への変換を防止します

誰も

t.pyに次のコードがあります:-

import time

for i in range(1,100):
    print(f"{i}% \r",end='')
    time.sleep(0.05)

このように1行で1から99まで数えます:-

ここに画像の説明を入力してください

したがって、次のコードを実行すると、同じことを期待します

import subprocess as sb
import sys

lol = sb.Popen('python t.py',stdout=sb.PIPE,shell=True,text=True)

while True:

    l = lol.stdout.read(1)
    if not l and lol.poll() is not None:
        break
    if(l == '\n'): # for checking
        print(" it should've been \\r") # this should not happen

    sys.stdout.write(l)
    sys.stdout.flush()

print("done")

ただし、このコードはすべての個別の行に1%から99%を出力します。このような:-

1%  it should've been \r

2%  it should've been \r

3%  it should've been \r

4%  it should've been \r

..... i have skipped this part .....

99%  it should've been \r

done

だから私は少しifステートメントを追加しました

    if(l == '\n'):
        print(" it should've been \\r")

上記のifステートメントは、どういうわけか '\ r'が '\ n'に変換される可能性があることを示しています。

Roy2012

まあ、それはドキュメントにあります:(https://docs.python.org/3.8/library/subprocess.html#frequently-used-arguments):

「エンコーディングまたはエラーが指定されている場合、またはテキスト(universal_newlinesとも呼ばれます)がtrueの場合、ファイルオブジェクトstdin、stdout、およびstderrは、呼び出しで指定されたエンコーディングとエラー、またはio.TextIOWrapperのデフォルトを使用してテキストモードで開かれます。 「」

「stdoutおよびstderrの場合、出力のすべての行末は '\ n'に変換されます。詳細については、コンストラクターへの改行引数がNoneの場合のio.TextIOWrapperクラスのドキュメントを参照してください。」

この動作を回避するには、text = Trueフラグを削除してください。その場合、stdoutから読み取るものは文字列ではなくバイト配列になり、それに応じて処理する必要があることに注意してください。

次のt.pyとメインスクリプトの実装は、あなたが望むものを実現します。

t.py:

import time
import sys

for i in range(1,100):
    print(f'{i} \r', end='')
    sys.stdout.flush()
    time.sleep(0.2)

メインスクリプト:

import subprocess as sb
import sys

lol = sb.Popen('python3 t.py',stdout=sb.PIPE,shell=True)

while True:


    l = lol.stdout.read(1)

    if not l and lol.poll() is not None:
        break

    print(l.decode("utf-8"), end="")

print("done")

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

期待スクリプトの変数からキャリッジリターン(\ r)を削除します

分類Dev

終了VBAからキャリッジリターン(alt + enter)を削除します

分類Dev

MySQLLONGSTRING値からのキャリッジリターンの損失を防ぐ

分類Dev

解析後、<pre>からのテキストでキャリッジリターンを保持します

分類Dev

Csv文字列からのキャリッジリターンの削除

分類Dev

配列からのリターンキャリッジの削除-Javascript

分類Dev

awk出力からのキャリッジリターンの抑制/削除

分類Dev

WPF DataGridがstringbuilderからキャリッジリターンを盗む

分類Dev

番号から電話番号へのリンクのモバイル形式の変換を防止しますか?

分類Dev

キャリッジリターン(\ r)を実際の上書きに変換する

分類Dev

JAVAでのキャリッジリターンの検出(\ r \ n)

分類Dev

Javaでキャリッジリターンから文字列をトリミングする方法

分類Dev

JSONオブジェクトから文字列へのキャリッジリターン

分類Dev

JSONオブジェクトから文字列へのキャリッジリターン

分類Dev

R read.csvキャリッジリターンを無視する方法は?

分類Dev

ソケット応答からの改行/キャリッジリターンを読み取れません

分類Dev

テキストからキャリッジリターンと特殊文字を削除する

分類Dev

Spring 統合 IP - ソケットを介したメッセージの最後にあるキャリッジ リターン (\r\n) を省略します。

分類Dev

キャリッジリターンをOracleからSQLサーバーに移行する

分類Dev

Cシリアル読み取りでキャリッジリターン「\ r」が見つかりません

分類Dev

Nanoからキャリッジリターンを削除するにはどうすればよいですか?

分類Dev

Roslyn-SyntaxFactory-解析ステートメント-キャリッジリターン/改行を追加しますか?

分類Dev

Rubyは出力のキャリッジリターン(\ r)を読みませんか?

分類Dev

freadがキャリッジリターン(\ r)をdata.tableに挿入するのはなぜですか?

分類Dev

IEx Portsのstderrでキャリッジリターンを強制しますか?

分類Dev

textarea形式で3つ以上のキャリッジリターンを削除しますか?

分類Dev

PHPは<br>をキャリッジリターンに置き換えますか?

分類Dev

「\ r」は文字通りキャリッジリターンシンボルを印刷します

分類Dev

JSONファイルから改行、タブ、キャリッジリターンなどのエスケープシーケンス文字を削除します

Related 関連記事

  1. 1

    期待スクリプトの変数からキャリッジリターン(\ r)を削除します

  2. 2

    終了VBAからキャリッジリターン(alt + enter)を削除します

  3. 3

    MySQLLONGSTRING値からのキャリッジリターンの損失を防ぐ

  4. 4

    解析後、<pre>からのテキストでキャリッジリターンを保持します

  5. 5

    Csv文字列からのキャリッジリターンの削除

  6. 6

    配列からのリターンキャリッジの削除-Javascript

  7. 7

    awk出力からのキャリッジリターンの抑制/削除

  8. 8

    WPF DataGridがstringbuilderからキャリッジリターンを盗む

  9. 9

    番号から電話番号へのリンクのモバイル形式の変換を防止しますか?

  10. 10

    キャリッジリターン(\ r)を実際の上書きに変換する

  11. 11

    JAVAでのキャリッジリターンの検出(\ r \ n)

  12. 12

    Javaでキャリッジリターンから文字列をトリミングする方法

  13. 13

    JSONオブジェクトから文字列へのキャリッジリターン

  14. 14

    JSONオブジェクトから文字列へのキャリッジリターン

  15. 15

    R read.csvキャリッジリターンを無視する方法は?

  16. 16

    ソケット応答からの改行/キャリッジリターンを読み取れません

  17. 17

    テキストからキャリッジリターンと特殊文字を削除する

  18. 18

    Spring 統合 IP - ソケットを介したメッセージの最後にあるキャリッジ リターン (\r\n) を省略します。

  19. 19

    キャリッジリターンをOracleからSQLサーバーに移行する

  20. 20

    Cシリアル読み取りでキャリッジリターン「\ r」が見つかりません

  21. 21

    Nanoからキャリッジリターンを削除するにはどうすればよいですか?

  22. 22

    Roslyn-SyntaxFactory-解析ステートメント-キャリッジリターン/改行を追加しますか?

  23. 23

    Rubyは出力のキャリッジリターン(\ r)を読みませんか?

  24. 24

    freadがキャリッジリターン(\ r)をdata.tableに挿入するのはなぜですか?

  25. 25

    IEx Portsのstderrでキャリッジリターンを強制しますか?

  26. 26

    textarea形式で3つ以上のキャリッジリターンを削除しますか?

  27. 27

    PHPは<br>をキャリッジリターンに置き換えますか?

  28. 28

    「\ r」は文字通りキャリッジリターンシンボルを印刷します

  29. 29

    JSONファイルから改行、タブ、キャリッジリターンなどのエスケープシーケンス文字を削除します

ホットタグ

アーカイブ