[問題] 使用python控制bash是個好方法嗎?

看板Python作者 (我的帥,在於臉)時間3年前 (2021/09/10 18:36), 3年前編輯推噓4(4019)
留言23則, 5人參與, 3年前最新討論串1/1
如題 最近在 Linux 上使用 python 做分析 因為 Linux 有很多 tool 很方便,打個 command 就有我要的東西, 最近我有需求,就是需要把 Linux tool 出來的資訊用 python 做分析, 所以有在 python 內使用 subprocess 這個 package 來控制 bash 當然是成功的,也可以 print 出我要的(能 print 出代表可以做分析了) 但這個做法會是個好作法嗎?是否移植性就會比較弱一點? 我需要且已經考量的點有: 1.若要到別台 Liunx 上使用我的 python script,要先裝我用到的 Linux tool 2.只能在 Linux 系統上使用我的 python script 不知道有沒有是我沒有考量進去的點 謝謝大家! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.53.170 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1631270209.A.D6D.html

09/10 18:46, 3年前 , 1F
Linux 工具 MinGW 都有做成可以在 Windows 跑的 EXE 檔
09/10 18:46, 1F

09/10 18:46, 3年前 , 2F
當然包括 bash,所以不是太特殊的指令都不用擔心
09/10 18:46, 2F

09/10 18:48, 3年前 , 3F
在 Windows 上,別人開 CMD 你開 bash 感覺特別的囂張
09/10 18:48, 3F

09/10 19:17, 3年前 , 4F
要考量的就是是不是多數系統 buils in 的命令,另外得提一
09/10 19:17, 4F

09/10 19:17, 3年前 , 5F
下的是 macOS 或者說 Unix 下有寫命令即使名稱一樣,但使用
09/10 19:17, 5F

09/10 19:17, 3年前 , 6F
方法和結果未必與 Linux 下一樣
09/10 19:17, 6F

09/10 19:19, 3年前 , 7F
如果不是內建的命令,常見的做法會是:
09/10 19:19, 7F

09/10 19:20, 3年前 , 8F
1. 將依賴反轉過來,命令的結果透過管道交給 Python 腳本處
09/10 19:20, 8F

09/10 19:20, 3年前 , 9F
理,這樣即使沒有命令,只要輸入相同也可以用
09/10 19:20, 9F

09/10 19:21, 3年前 , 10F
2. 把要的功能打包起來…
09/10 19:21, 10F

09/11 11:10, 3年前 , 11F
我也建議樓上大大提供的(1)方法
09/11 11:10, 11F

09/11 11:11, 3年前 , 12F
善用shell script
09/11 11:11, 12F
我不太懂H大的做法1 是去撰寫shell script,然後輸出結果(可能輸出成檔案) 再去python讀取是嗎? ※ 編輯: ericerix (140.115.53.170 臺灣), 09/11/2021 14:24:29

09/11 15:33, 3年前 , 13F
就linux 常見用法 "ls -l | wc -l" 中間的 "|"
09/11 15:33, 13F

09/11 15:34, 3年前 , 14F
把前一個指令的 stdout 轉給下一個指令處理
09/11 15:34, 14F

09/11 15:34, 3年前 , 15F
但我不確定windows的話 powershell有沒有類似指令
09/11 15:34, 15F

09/11 15:51, 3年前 , 16F
從 DOS 時代就有 pipe (|) 所以 CMD 和 powershell 都有
09/11 15:51, 16F

09/11 16:47, 3年前 , 17F
不過我比較挺原 PO 作法,因為我也習慣這樣做 XDDDD
09/11 16:47, 17F

09/11 17:06, 3年前 , 18F
就像 Sunal 說的,這樣可以不用管 | 之前的東西是什麼,只
09/11 17:06, 18F

09/11 17:06, 3年前 , 19F
需要確保拿到的東西是一致的就好, 如果你說的指令是放諸各
09/11 17:06, 19F

09/11 17:07, 3年前 , 20F
作業系統都能用且格是一致的, 再用原來方法寫
09/11 17:07, 20F
了解 若原本的想法就是限定在Linux系統上跑 也是可以用原本的做法就是了 謝謝大家解答。 ※ 編輯: ericerix (118.160.252.108 臺灣), 09/12/2021 15:14:20

09/12 18:57, 3年前 , 21F
功能類似但有被包成 library 的東西盡量利用比較好
09/12 18:57, 21F

09/12 18:59, 3年前 , 22F
但只是要快點把東西實作出來的話其實就你方便就好
09/12 18:59, 22F

09/12 19:01, 3年前 , 23F
依賴反轉也推
09/12 19:01, 23F
文章代碼(AID): #1XEpL1rj (Python)
文章代碼(AID): #1XEpL1rj (Python)