
이 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
(유닉스 스타일) 대신 (윈도우 스타일)로 끝날 수도 있습니다.\r\n
\n
그냥 유닉스로 변환 sed -i 's/\r//' commands.txt
하거나 스크립트를 sed 's/\r//' commands.txt | python postpycess.py
.