私も同じように走っています。Pythonスクリプトどんどん出力リダイレクトいろいろな方法で得て出力が破損しています。。時々行方不明の行時々順序が逆です。。 Pythonスクリプトには、出力ファイルとして印刷したい複数の印刷ステートメントが含まれています。
まず、出力がどのように表示されるかを見てみましょう。
Number of haplotypes: 400000,400000,400000
Number of trees: 2946715
Number of mutations: 3454912
Sequence length: 62949445.0
True PRS read from file: ../data/prs_true/prs.prs_true. 600000 lines imported.
Defining cases/controls [2020-07-27 23:26:09]
Case control variables saved to ../data/case_control/c_c.case_control.pickle.
End
A実行:デフォルトの出力であるmy screenを使用してスクリプトを実行しています。印刷ステートメントの順序は正確ですが、最後の2つの印刷ステートメントがありません。
(genPy2) [user@vm code]$ python simulate_prs_py2.py --tree ../data/tree/tree.hdf5 --true_prs ../data/prs_true/prs.prs_true --ncausal=200 --h2=0.33 --out ../data/case_control/sim_full
Number of haplotypes: 400000,400000,400000
Number of trees: 2946715
Number of mutations: 3454912
Sequence length: 62949445.0
True PRS read from file: ../data/prs_true/prs.prs_true. 600000 lines imported.
Defining cases/controls [2020-07-27 23:24:48]
Bラン:私は同じスクリプトを実行し、出力を "output.txt"ファイルにリダイレクトしています。最初の数行は画面に印刷され、最後の2行はファイルに印刷されます。なぜすべてをファイルに保存しないのですか?しかも今の順番がめちゃくちゃになりました。ファイルの最初の行(True PRS ...)が画面出力の最後の行(Define Case ...)の前になければなりません。
(genPy2) [user@vm code]$ python simulate_prs_py2.py --tree ../data/tree/tree.hdf5 --true_prs ../data/prs_true/prs.prs_true --ncausal=200 --h2=0.33 --out ../data/case_control/sim_full > output.txt
Number of haplotypes: 400000,400000,400000
Number of trees: 2946715
Number of mutations: 3454912
Sequence length: 62949445.0
Defining cases/controls [2020-07-27 23:25:22]
(genPy2) [user@vm code]$ cat output.txt
True PRS read from file: ../data/prs_true/prs.prs_true. 600000 lines imported.
Case control variables saved to ../data/case_control/c_c.case_control.pickle.
End
Cを実行してください:これでnohupを使用し、出力を「../data/case_control/output.txt」ファイルに保存します。すべての出力は出力ファイルにリダイレクトされますが、「True PRS ...」および「Defining Cases ...」ステートメントは依然として逆順です。
(genPy2) [user@vm code]$ nohup python simulate_prs_py2.py --tree ../data/tree/tree.hdf5 --true_prs ../data/prs_true/prs.prs_true --ncausal=200 --h2=0.33 --out ../data/case_control/sim_full > ../data/case_control/output.txt
nohup: ignoring input and redirecting stderr to stdout
(genPy2) [user@vm code]$ cat ../data/case_control/output.txt
Number of haplotypes: 400000,400000,400000
Number of trees: 2946715
Number of mutations: 3454912
Sequence length: 62949445.0
Defining cases/controls [2020-07-27 23:26:09]
True PRS read from file: ../data/prs_true/prs.prs_true. 600000 lines imported.
Case control variables saved to ../data/case_control/c_c.case_control.pickle.
End
私はこれが私のPythonスクリプトではなくシェルの問題だと80%確信しています。もしそうなら、すべてが大丈夫です。しかし、Pythonスクリプトが正しく実行されることが重要です。
このようなことが起こる理由と解決策の提案をいただきありがとうございます。
答え1
詳細がわからず、Pythonスクリプトをリサイクルしました。
スクリプトはPython 2で実行され、print
パッケージから関数をインポートします__future___
。eprint
これはで印刷され、stderr
(print
Python 2のデフォルト)で印刷されたすべての項目はとして印刷されますstdout
。
print
Aで欠落している文と画面eprint
に表示されている文を実行してください。- 文を保存する場合は、実行Bの
print
「output.txt」に文を保存してください。eprint
- nohubは両方ともファイルに
stderr
リンクしますstdout
。したがって、Cを実行すると、すべてが出力ファイルに渡されます。しかし、私はまだその逆の順序を説明できません。
それを使用するだけでeprint
すべての問題が解決されました。
ここまでご案内いただいた@Pankiに感謝します。