Bash
將輸入從文件重定向到 Python 腳本失敗但適用於管道
我有這個 python 腳本:
postpycess.py
從網格文件中提取數據airfoil.p3d
。該腳本旨在處理不使用參數的輸入,因此我創建了一個輸入文件commands.txt
並將其重定向到腳本。commands.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 中重定向文件的輸入會失敗?
我感謝您的幫助。
您的行可能以(windows-style)而不是(unix-style)
commands.txt
終止。\r\n``\n
只需將其轉換為 unix
sed -i 's/\r//' commands.txt
或將腳本執行為sed 's/\r//' commands.txt | python postpycess.py
.