在python中关闭文件后出现函数调用错误

问题描述 投票:0回答:1

这是我的第一个问题,如果我不能用更少的话说清楚,那就很抱歉。我正在写一个python脚本,我要求用户输入他想要执行的操作。我对特定操作(A和N)有两个功能。我使用if-else语句检查并应用特定函数并将整个输出写入新文件。关闭文件句柄后,我在同一个复选框中调用另一个函数(if-else)。 about()它的输出应该根据if-else检查显示在命令提示符上但是我得到了

    "Value error: I/O operation on closed file."

这就是我到目前为止所做的

    obj = PhysioCal()
if (args.operation == 'N' or args.operation == 'n'):
    with open (args.output,"w") as fout:
        sys.stdout=fout
        t_n=obj.nucleotide(obj.fasta_reader(args.input))
        sys.stdout.close()
    obj.about(t_n)
elif (args.operation == 'A' or args.operation == 'a'):
    with open (args.output,"w") as fout:
        sys.stdout=fout
        t_a=obj.amino_acid(obj.fasta_reader(args.input))
        sys.stdout.close()
    obj.about(t_a)
else:
    obj.about(0)
    print("\n\t\t\tProcess Failed")
    print("\t\t\aYou have seleccted wrong operation")
    print("\t\tuse -h argument for help menu")

这里t_n和t_a是函数返回的时间。关于函数显示命令提示符下的时间。

写入方式是在文件中获取函数的所有输出而不是在cmd上打印?

python python-3.x file-handling
1个回答
0
投票

既然你reasigned sys.stdoutfout然后关闭它,程序就不能打印到stdout了。您可以直接使用fout而无需重新分配即可写入。检查python文档以写入文件。

© www.soinside.com 2019 - 2024. All rights reserved.