Bash

將輸入從文件重定向到 Python 腳本失敗但適用於管道

  • September 13, 2020

我有這個 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

只需將其轉換為 unixsed -i 's/\r//' commands.txt或將腳本執行為sed 's/\r//' commands.txt | python postpycess.py.

引用自:https://unix.stackexchange.com/questions/609207