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

时间:2017-12-24 14:17:57

标签: python python-3.x file-handling

这是我的第一个问题,如果我没有用更少的话说清楚,那就很抱歉。 我正在写一个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上打印的写方式吗?

1 个答案:

答案 0 :(得分:0)

由于您Value parallelize is not a member of org.apache.spark.SparkConf reasigned sys.stdout然后关闭它,程序无法再打印到stdout。您可以直接使用fout而无需重新分配即可写入。检查python文档以写入文件。