这是我的第一个问题,如果我不能用更少的话说清楚,那就很抱歉。我正在写一个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上打印?
既然你reasigned sys.stdout
到fout
然后关闭它,程序就不能打印到stdout了。您可以直接使用fout而无需重新分配即可写入。检查python文档以写入文件。