ubuntu >導向不能用在subprocess - Linux

Table of Contents

各位前輩您好,由於不知道要放在linux還是python版,若有錯版我會馬上刪文

當我在terminal執行sudo ./sync_to_gps8 >123.txt時,都能夠順利執行,但因為我需要
用python去統整,所以我使用了python的subprocess 模組,但是當我一樣執行sudo ./sy
nc_to_gps8 >123.txt,卻遇到了這個問題,但我也不知道這是錯在哪裡,希望各位前輩
指導,謝謝各位前輩

正常在terminal執行:
https://i.imgur.com/m3CBuSH.jpg

用subprocess模組執行(發生錯誤):
https://i.imgur.com/y9fmwq9.jpg

程式碼:
https://i.imgur.com/dmIp5Dk.jpg

--

All Comments

James avatarJames2021-05-25
cwd 是否不在哪?找不到 python script 檔?
改執行 sudo pwd 印出路徑來看看?
還有,文不對題
Kelly avatarKelly2021-05-26
文有不對題嗎OAO?
Hedda avatarHedda2021-05-27
你跟你上面一樣多加個 shell=True 就會動了吧
Sierra Rose avatarSierra Rose2021-05-28
我沒理解錯的話,你不加 shell=True 的話它會去找檔案名稱
為 'sudo ./sync_ ...' 的程式來執行
Jacob avatarJacob2021-05-28
加了會真的 invoke 一個 shell 出來跑你給他的指令
Rachel avatarRachel2021-05-29
推樓上 oToToT 大看出問題癥結點,高手!
這個問題比較像是同個命令能在一般 shell 執行,
但是卻無法執行於 Python 的 subprocess,
另外,錯誤訊息 No such file or directory 跟…
">" 重導向沒有關係,所以我才會覺得文不對題
Zenobia avatarZenobia2021-05-30
其實官方說很清楚,預設 shell=False 時候,你帶入的
Irma avatarIrma2021-05-31
那個字串會當作要執行時間的程式檔案名稱
Madame avatarMadame2021-06-01
你有用 shell 內 io 重導的符號時候,需要用 shell=True
畢竟這些符號只有 shell 可以認識,所以會開啟外部的
Candice avatarCandice2021-06-01
shell 程式,把整個字串當命令丟給 shell 執行
Oliver avatarOliver2021-06-02
shell=True 基本上就等於傳統 os.system() 使用
Isla avatarIsla2021-06-03
若你不使用 shell=True 要使用 subprocess.call()
Agnes avatarAgnes2021-06-04
一般就是得改成帶入 ['sudo', './sysnc_to_gps8']
Erin avatarErin2021-06-05
至於 > 123.txt, 可以用 open() 開檔帶入給 stdout 參數
Brianna avatarBrianna2021-06-05
推樓上講得更清楚
Suhail Hany avatarSuhail Hany2021-06-06
推,樓上解釋道得很清楚
Hedwig avatarHedwig2021-06-07
ok理解,那不改標題也沒差多少了
Oscar avatarOscar2021-06-08
io重導向指的是 shell 的 IO Redirection
Margaret avatarMargaret2021-06-09
就是 >、<、2>&1、…、這類的東西
Robert avatarRobert2021-06-09
由 shell 幫你重導 stdin/stdout/stderr 到其他 fd 或檔
Audriana avatarAudriana2021-06-11
其實就 exec sudo vs exec sh -c sudo 的差別