Python IOError: [Errno 5] 输入/输出错误?

20

我正在远程服务器上运行一个使用nohup的Python脚本。

  • 首先,我使用VPN和SSH连接到远程计算机
  • 其次,我使用以下命令运行Python脚本:

    nohup python backmap.py mpirun -np 48 &

Python脚本包含以下几行代码:

frame = []
file_in = open("Traj_equil_prot.pdb", "r")
for line in file_in:
    if line.startswith('TITLE'):
        frame.append(line[127:134])

import os
for fileNum in range(631, 29969):
    os.system("./initram-v5.sh -f Traj_equil_prot_frame" +  str(fileNum) + ".pdb -o Traj_equilprot_aa_frame" + str(frame[fileNum]) + ".gro -to amber -p topol.top")

今天一整天脚本都运行得很好,但现在它突然崩溃了,当我试图重新启动时,出现以下错误:

Traceback (most recent call last): File "", line 1, in IOError: [Errno 5] Input/output error

文件在工作目录中。我尝试过断开/重新连接,但问题依旧。我不知道我错过了什么。请帮忙解决,谢谢。


我不确定是否相关,但您从未关闭 file_in - Elazar
我刚刚尝试在Python中打开文件,并使用file_in.close()关闭它。断开并重新连接到远程机器,然后再次运行脚本,但仍然出现相同的错误 :/ - FZJ
3个回答

29

我曾经遇到同样的问题,我使用以下命令来运行我的脚本:

python MY_SCRIPT.py &

脚本将在后台运行,并且输出将显示在终端上,直到您注销或退出。

通过注销,脚本仍在运行,但它的输出没有地方显示,因此当脚本想要显示某些内容时(例如调用print),会出现异常。


解决方案:

我已将输出导向到除实际终端显示之外的其他位置:

python MY_SCRIPT.py >/dev/null &

点击以下链接了解更多细节:

https://dev59.com/uloT5IYBdhLWcg3wtRYR#38238281


3
我认为你可以使用nohup。nohup python myscript.py & - Paolo
有趣的是,当我使用 print 时,出现了异常,但当我使用 sys.stdout.write 时,没有引发异常。 - Jeyekomon

0

我最终通过打开“file_in”文件,进行修改(例如在REM的行中添加一个点),并保存更改来解决了问题。


0
我在尝试使用shutil库加载一些文件或复制它们时遇到了这个错误。通过为缓冲区启动我的代码并输出到文件,问题已经解决。
python my_code.py >> output.txt

The tqdm will still be visible, making the advancement of the code easy to follow.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接