このPythonスクリプトがあります。postpycess.py
グリッドファイルからのデータのプロットairfoil.p3d
。スクリプトはパラメータなしで入力を処理するように設計されているため、入力ファイルを作成してcommands.txt
スクリプトにリダイレクトしました。
コマンド.txt:(最初の入力は翼の名前で、拡張子なしで提供する必要があります.p3d
。)
airfoil
1
1
q
q
Windowsでは、次のように実行できます。
python postpycess.py < commands.txt
しかし、残念ながらUbuntu 20.04でコマンドを実行するとスクリプトは失敗します。
The current working dir: /tmp/allworks/python/mwe
This is Postpycess, the CFD postprocessor
Version: 1.1
.p3dr project name: Error: can't read the file airfoil
ただし、以下はファイルにのみ適用されます。
printf 'airfoil\n1\n1\nq\nq\n' | python postpycess.py
私はPythonスクリプトで原因を絞り込み、成功せずに同じ問題を再現する最小の例を作成しようとしました。
Linuxでファイル入力リダイレクトが失敗する理由を説明できますか?
ご協力ありがとうございます。
答え1
あなたの行はcommands.txt
(Unixスタイル)ではなく(Windowsスタイル)で終わることがあります。\r\n
\n
ちょうどUnixに変換するsed -i 's/\r//' commands.txt
か、スクリプトをsed 's/\r//' commands.txt | python postpycess.py
。