推 goldie: cwd 是否不在哪?找不到 python script 檔?05/24 19:48
→ goldie: 改執行 sudo pwd 印出路徑來看看?05/24 19:48
https://i.imgur.com/eaJkilv.jpg
→ goldie: 還有,文不對題05/24 19:48
想請問g大,我路徑印出來了,另外想請問我的標題有哪裡下的不對嗎?我立刻改,謝謝
您指導
→ oToToT: 文有不對題嗎OAO?05/24 20:15
→ oToToT: 你跟你上面一樣多加個 shell=True 就會動了吧05/24 20:19
真的,這樣就可以了,想請問o大為什麼這樣就可以了呢?
※ 編輯: asd24693120 (111.254.58.80 臺灣), 05/24/2021 20:27:58
→ oToToT: 我沒理解錯的話,你不加 shell=True 的話它會去找檔案名稱05/24 21:52
→ oToToT: 為 'sudo ./sync_ ...' 的程式來執行05/24 21:52
→ oToToT: 加了會真的 invoke 一個 shell 出來跑你給他的指令05/24 21:53
原來如此,謝謝o大
推 goldie: 推樓上 oToToT 大看出問題癥結點,高手!05/24 21:58
→ goldie: 這個問題比較像是同個命令能在一般 shell 執行,05/24 21:58
→ goldie: 但是卻無法執行於 Python 的 subprocess,05/24 21:58
→ goldie: 另外,錯誤訊息 No such file or directory 跟…05/24 21:58
→ goldie: ">" 重導向沒有關係,所以我才會覺得文不對題05/24 21:58
謝謝g大的建議,因為我也不太曉得要怎麼問才能完美表示出問題,經您這樣說,我大概
知道您的意思了
→ kenduest: 其實官方說很清楚,預設 shell=False 時候,你帶入的05/24 22:13
→ kenduest: 那個字串會當作要執行時間的程式檔案名稱05/24 22:14
→ kenduest: 你有用 shell 內 io 重導的符號時候,需要用 shell=True05/24 22:15
請問io重導是什麼意思呢?
→ kenduest: 畢竟這些符號只有 shell 可以認識,所以會開啟外部的05/24 22:15
→ kenduest: shell 程式,把整個字串當命令丟給 shell 執行 05/24 22:16
→ kenduest: shell=True 基本上就等於傳統 os.system() 使用05/24 22:17
→ kenduest: 若你不使用 shell=True 要使用 subprocess.call()05/24 22:19
→ kenduest: 一般就是得改成帶入 ['sudo', './sysnc_to_gps8']05/24 22:20
→ kenduest: 至於 > 123.txt, 可以用 open() 開檔帶入給 stdout 參數05/24 22:24
謝謝k大仔細的講解,讓我真的又學到了一課
推 oToToT: 推樓上講得更清楚05/24 22:38
推 Typebrook: 推,樓上解釋道得很清楚 05/25 08:27
真的很謝謝各位前輩耐心的指導~
※ 編輯: asd24693120 (111.254.58.80 臺灣), 05/25/2021 08:55:14
推 goldie: ok理解,那不改標題也沒差多少了 05/25 12:20
推 goldie: io重導向指的是 shell 的 IO Redirection 05/25 12:31
→ goldie: 就是 >、<、2>&1、…、這類的東西 05/25 12:32
→ goldie: 由 shell 幫你重導 stdin/stdout/stderr 到其他 fd 或檔 05/25 12:33
→ goldie: 案 05/25 12:33
原來如此,謝謝g大指導
推 Bencrie: 其實就 exec sudo vs exec sh -c sudo 的差別05/25 13:33
嗚嗚,b大說的這個我也不是很懂
※ 編輯: asd24693120 (42.74.31.161 臺灣), 05/26/2021 14:01:16