Python:Powershellでのstdinからのバイナリファイルの読み取りと書き込み

持っています:

Pythonで書かれた次の2つのプログラムがあります

# cat.py
import sys

filename = sys.argv[1]

with open(filename, "rb") as f:
    while c := f.read(1024 * 1024):
        sys.stdout.buffer.write(c)

このプログラムはファイルを読み取り、それをバイナリとしてstdoutに出力します。

次のプログラムは、データを読み取ってバイトとして出力することを目的としています。

import sys
import io
if __name__ == '__main__':
    print(sys.stdin.buffer.read(io.DEFAULT_BUFFER_SIZE))

ただし、この場合はファイルの内容がわかりません。これをLinuxで実行すると、正確な内容が得られますが、Windowsで実行すると、次のようにはなりません。

python cat.py .\inputs\input.bin | python main.py

Windowsでの出力(pwsh.exeで実行):

0x3
0xc2
0xb7
0x55
0x12
0x20
0x66
0x67
0x50
0xc3
0x9e
0xc2
0xbd
0xd
0xa

Linuxでの出力(これは正しい):

0x3
0xfa
0x55
0x12
0x20
0x66
0x67
0x50
0xe8
0xab

なぜこれが当てはまるのでしょうか?改行の終わりなのでしょうか?

また、cat.pyでstdoutではなくファイルに書き込むと、正しい内容がファイルに書き込まれます。


更新:

さて、私はそれをpowershellの問題であると絞り込みました。これをcmd.exeで実行する場合、問題はありませんが、Powershellで実行する場合は実行します。

ソフォス:

両方のコマンドラインに異なるエンコーディングが設定されている可能性があり、その結果、異なるデータストリームが発生する可能性があります。

残念ながら、stdinからバイナリとして読み込んだ場合でも、コマンドラインを経由する必要があり、通常、システム全体に影響するエンコード設定があります。

ある答えは、この問題の解決に役立つはずです。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

バイナリからの書き込みと読み取り

分類Dev

ファイルからの読み取りとStringIOへの書き込み-Python

分類Dev

Pythonのファイルからの読み取りと書き込み

分類Dev

あるファイルから別のファイルへのバイナリデータの読み取りと書き込み

分類Dev

バイナリファイルの読み取り/書き込み

分類Dev

C#:バイナリファイルとの間のリストの書き込みと読み取り

分類Dev

C ++でのファイルストリームへの/からのバイナリバイト/ ints / longsの書き込み/読み取り

分類Dev

csvファイルの読み取りと書き込みPython

分類Dev

tfrecordsバイナリファイルの読み取りと書き込み(タイプミスマッチ)

分類Dev

Cのファイルからの読み取りと書き込み

分類Dev

QTableViewからのファイルの読み取りと書き込み

分類Dev

Rokuの一時ファイルからの読み取りと書き込み

分類Dev

バイナリファイルでの制御文字の読み取り/書き込み

分類Dev

C ++でのファイルからの書き込み/読み取り

分類Dev

バイナリファイルへの書き込みと読み取りが機能しない

分類Dev

バイナリの読み取りと書き込みを使用してファイルを連結します

分類Dev

バイナリの読み取りと書き込みを使用してファイルを連結します

分類Dev

Javaでのバイナリファイルの読み取りと書き込み(ファイルの半分が破損しているのが見える)

分類Dev

Pythonでのファイルの書き込みと読み取り

分類Dev

txtファイルからの文字の読み取り、エンコード、およびバイナリファイルへの書き込み

分類Dev

Pythonでのファイルの読み取り/書き込みとWordCountリストの辞書の使用

分類Dev

Javaファイルからの読み取りと書き込み

分類Dev

ファイルから読み取り、別のPythonに書き込みます

分類Dev

haskellのファイルの読み取りと書き込み

分類Dev

あるJavaファイルからの読み取りと別のJavaファイルへの書き込み

分類Dev

Javaでのファイルの書き込み/読み取り

分類Dev

C ++でのファイルの読み取り/書き込み

分類Dev

C#を使用したファイルの読み取り、書き込み、ファイルからの読み取り、ファイルへの書き込み

分類Dev

std :: set <T>のバイナリファイルへの書き込み/読み取り

Related 関連記事

  1. 1

    バイナリからの書き込みと読み取り

  2. 2

    ファイルからの読み取りとStringIOへの書き込み-Python

  3. 3

    Pythonのファイルからの読み取りと書き込み

  4. 4

    あるファイルから別のファイルへのバイナリデータの読み取りと書き込み

  5. 5

    バイナリファイルの読み取り/書き込み

  6. 6

    C#:バイナリファイルとの間のリストの書き込みと読み取り

  7. 7

    C ++でのファイルストリームへの/からのバイナリバイト/ ints / longsの書き込み/読み取り

  8. 8

    csvファイルの読み取りと書き込みPython

  9. 9

    tfrecordsバイナリファイルの読み取りと書き込み(タイプミスマッチ)

  10. 10

    Cのファイルからの読み取りと書き込み

  11. 11

    QTableViewからのファイルの読み取りと書き込み

  12. 12

    Rokuの一時ファイルからの読み取りと書き込み

  13. 13

    バイナリファイルでの制御文字の読み取り/書き込み

  14. 14

    C ++でのファイルからの書き込み/読み取り

  15. 15

    バイナリファイルへの書き込みと読み取りが機能しない

  16. 16

    バイナリの読み取りと書き込みを使用してファイルを連結します

  17. 17

    バイナリの読み取りと書き込みを使用してファイルを連結します

  18. 18

    Javaでのバイナリファイルの読み取りと書き込み(ファイルの半分が破損しているのが見える)

  19. 19

    Pythonでのファイルの書き込みと読み取り

  20. 20

    txtファイルからの文字の読み取り、エンコード、およびバイナリファイルへの書き込み

  21. 21

    Pythonでのファイルの読み取り/書き込みとWordCountリストの辞書の使用

  22. 22

    Javaファイルからの読み取りと書き込み

  23. 23

    ファイルから読み取り、別のPythonに書き込みます

  24. 24

    haskellのファイルの読み取りと書き込み

  25. 25

    あるJavaファイルからの読み取りと別のJavaファイルへの書き込み

  26. 26

    Javaでのファイルの書き込み/読み取り

  27. 27

    C ++でのファイルの読み取り/書き込み

  28. 28

    C#を使用したファイルの読み取り、書き込み、ファイルからの読み取り、ファイルへの書き込み

  29. 29

    std :: set <T>のバイナリファイルへの書き込み/読み取り

ホットタグ

アーカイブ