これは私の最初の質問です。 私は彼が実行したい操作を入力するようにユーザーに依頼するPythonスクリプトを書いています。私は特定の操作(AとN)に2つの機能を持っています。 if-else文を使って特定の関数をチェックして適用し、出力全体を新しいファイルに書き出しました。ファイルハンドルを閉じた後、同じチェックボックスで別の関数を呼び出しています(if-else)。 オンにした場合、他のその出力はに応じて、コマンドプロンプトに表示されなければならない)(約しかし、私は、これは T_N私はこれまで何をやったかPythonでファイルを閉じた後に関数呼び出しエラーが発生しました
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")
ここ
ある
"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 –