我有这个 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
您的行可能以(windows-style) 而不仅仅是(unix-style)commands.txt
结尾。\r\n
\n
只需将其转换为 unixsed -i 's/\r//' commands.txt
或将脚本运行为sed 's/\r//' commands.txt | python postpycess.py
.