이 단어는 제 첫 번째 질문으로, 더 적은 단어로 명확히 밝히지 않으면 유감입니다. 나는 그가 수행하고자하는 작업을 입력하도록 사용자에게 요청하는 python 스크립트를 작성하고 있습니다. 나는 특정 작업 (A와 N)에 두 가지 기능을했습니다. if-else 문을 사용하여 특정 함수를 확인 및 적용하고 전체 출력을 새 파일에 기록했습니다. 파일 핸들을 닫은 후 동일한 확인란 (if-else)에서 다른 함수를 호출하고 있습니다. 약 () 출력을 확인하는 경우 - 다른 사람에 따라 명령 프롬프트에 표시하지만이 내가 지금까지 여기파이썬에서 파일을 닫은 후에 함수 호출 오류가 발생했습니다.
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을 수행하고 한 것입니다
"Value error: I/O operation on closed file."
을 취득해야한다 t_a은 함수가 복귀하는 시간입니다. 함수에 대한 명령 프롬프트에서 시간을 보여줍니다.
또한 cmd 대신에 파일에 함수의 모든 출력을 가져 오는 방법을 쓰고 있습니까?
왜'sys.stdout'을 덮어 쓰고'sys.stdout.close()'가하고 있다고 생각합니까? 힌트 :'open with '을 사용하고 있기 때문에 그 중 아무 것도 할 필요가 없다. – DeepSpace
'obj.nucleotide'는 암시 적으로 표준 출력을 사용합니까? 그렇지 않으면'fout'이 어떻게 사용되는지 명확하지 않습니다. – chepner
내 함수는'print' 문을 사용합니다. 그래서 나는 모든 ** 인쇄 ** 문장을 내가 쓰고 싶은 파일로 리디렉션하는 방법을 찾고있었습니다. 내가 지금 기억하지 못하는 어딘가에서 이런 식으로 찾았습니다. 다른 방법을 찾지 못했습니다. @DeepSpace –