1

Pythonスクリプトで実行可能ファイルを呼び出し、この実行可能ファイルにバイナリデータ(同じスクリプトで生成されたもの)を渡す必要があります。

私はそれをそのように機能させています:

bin = make_config(data)
open('binaryInfo.bin', 'wb+').write(bin)

os.system("something.exe " + "binaryInfo.bin")

'bin'をos.system呼び出しに直接渡すことで、binaryInfo.binファイルの作成を完全に回避できると思いました。

bin = make_config(data)

os.system("something.exe " + bin)

しかし、この場合、「'bytes'オブジェクトを暗黙的にstrに変換できません」というエラーが発生します。

ここで正しい構文を知っている人はいますか?これも可能ですか?

4

3 に答える 3

2

ここで正しい構文を知っている人はいますか?これも可能ですか?

あなたがそれをしているようではありません。UNIXコマンドラインで任意のバイナリデータを渡すことはできません。各引数は本質的にnullで終了するものとして扱われ、最大全長の制限は通常64KB以下であるためです。

この規則を認識する一部のアプリケーションでは、次のようなものを使用してstdinにデータをパイプできる場合があります。

pipe = os.popen("something.exe -", "w")
pipe.write(bin)
pipe.close()

ただし、アプリケーションがstdinの「-」を認識しない場合は、すでに行っているように一時ファイルを使用する必要があります。

于 2012-10-11T20:46:54.630 に答える
1
os.system(b"something.exe " + bin)

それを行う必要があります。ただし、コマンドラインからバイナリデータを送信する必要があるかどうかはわかりません。文字数になんらかの制限があるかもしれません。また、このsomething.exeは実際にコマンドラインからバイナリデータを受け入れますか?

于 2012-10-11T20:46:49.980 に答える
1

送信してもう一方の端でデコードする前にbase64encodingを実行する方法...afaikコマンドライン引数はASCII範囲値でなければなりません(これは真実ではないかもしれませんが...しかし私はそうだと思います..)...

別のオプションは、現在の方法でファイルを渡すことです...

または多分これをbashの引数としてバイナリデータを渡すのを見てください

于 2012-10-11T20:46:54.183 に答える