亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何搜索腳本的輸出并將小節保存到文件中?

如何搜索腳本的輸出并將小節保存到文件中?

尚方寶劍之說 2022-06-02 11:08:24
我有一個命令 nipype.interface.afni.Warp 它給了我以下 python 終端輸出:190920-12:22:00,333 nipype.interface INFO:         stderr 2019-09-20T12:22:00.333467:++ 3dWarp: AFNI version=AFNI_19.2.21 (Aug 29 2019) [64-bit]190920-12:22:00,334 nipype.interface INFO:         stderr 2019-09-20T12:22:00.334117:++ Authored by: RW Cox190920-12:22:00,365 nipype.interface INFO:         stderr 2019-09-20T12:22:00.365105:++ Using minimum spacing of 1.000000 mm for new grid spacing190920-12:22:03,252 nipype.interface INFO:         stderr 2019-09-20T12:22:03.252756:++ Output dataset /media/sf_Ubuntu_files/dicomtest/warp_test.nii.gz190920-12:22:03,253 nipype.interface INFO:         stdout 2019-09-20T12:22:03.253083:# mat44 Obliquity Transformation ::190920-12:22:03,253 nipype.interface INFO:         stdout 2019-09-20T12:22:03.253083:      1.000000     -0.000000      0.000000       0.000000190920-12:22:03,253 nipype.interface INFO:         stdout 2019-09-20T12:22:03.253083:      0.000000      0.999592     -0.028568      -1.842994190920-12:22:03,253 nipype.interface INFO:         stdout 2019-09-20T12:22:03.253083:     -0.000000      0.028568      0.999592       3.788057我想在“# mat44 Obliquity Transformation ::”行下方捕獲矩陣并將其寫入文件。我已經在 bash 中完成了這項工作,如下所示:3dWarp -flags_and_stuff | \grep  -A 4 '# mat44 Obliquity Transformation ::'  > $filename.1D但是我想用 python 來編寫上面的 bash 命令。按照這篇博客文章的步驟,我嘗試了這個:command = ['python3' ,"nipype.interfaces.afni.Warp('more stuff').run()"]my_env = os.environ.copy()my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"]p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, env=my_env)但是當我輸入時,p.communicate()我得到:>>> p.communicate()(b"python3: can't open file 'nipype.interfaces.afni.Warp(<stuff>).run()': [Errno 2] No such file or directory\n", None)如何在 python 中完成這項工作?還是在 bash 中執行更好?我正在編寫的腳本將使用這條線數千次,所以無論最快(我假設這也意味著最“pythonic”)的方法是什么。
查看完整描述

1 回答

?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

我認為您的命令行參數python3在 Python 的Popen調用中不正確。和

command = ['python3' ,"nipype.interfaces.afni.Warp('more stuff').run()"]

啟動的python3進程認為第一個參數是要執行的文件,但您希望運行一段 Python 代碼。

將您的command聲明更改為以下內容:

command = ['python3' ,'-c', "nipype.interfaces.afni.Warp('more stuff').run()"]

這應該使生成的python3進程將該參數解釋為要執行的命令,而不是文件名。

這當然是假設您首先要執行此操作。如果您要在 Python 中啟動 Python 的子進程,為什么不直接nipype.interfaces.afni.Warp('more stuff').run()在腳本中運行而不使用 Popen?


查看完整回答
反對 回復 2022-06-02
  • 1 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號