将输入从文件重定向到 Python 脚本失败,但可以使用管道

将输入从文件重定向到 Python 脚本失败,但可以使用管道

我有这个 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.

相关内容