国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python 運行 shell 獲取輸出結果的實例

2020-02-16 00:30:53
字體:
來源:轉載
供稿:網友

首先使用內置模塊os.

>>> import os>>> code = os.system("pwd && sleep 2")# /User/zhipeng>>> print code# 0

問題是 os.system 只能獲取到結束狀態

使用內置模塊 subprocess

>>> import subprocess>>> subprocess.Popen("pwd && sleep 2", shell=True, cwd="/home")# <subprocess.Popen object at 0x106498310># /home>>> sub = subprocess.Popen("pwd && sleep 2", shell=True, stdout=subprcess.PIPE)>>> sub.wait()>>> print sub.stdout.read()# /User/zhipeng
subprocess.Popen還支持一些別的參數 bufsize,executable=None, stdin=None, stdout=None, stderr=None preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None universal_newlines=False, startupinfo=None, creationflags=0

使用第三方模塊 sh

# pip install sh>>> from sh import ifconfig>>> print ifconfig("eth0")>>> from sh import bash>>> bash("pwd")Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Python/2.7/site-packages/sh.py", line 1021, in __call__ return RunningCommand(cmd, call_args, stdin, stdout, stderr) File "/Library/Python/2.7/site-packages/sh.py", line 486, in __init__ self.wait() File "/Library/Python/2.7/site-packages/sh.py", line 500, in wait self.handle_command_exit_code(exit_code) File "/Library/Python/2.7/site-packages/sh.py", line 516, in handle_command_exit_code raise exc(self.ran, self.process.stdout, self.process.stderr)sh.ErrorReturnCode_126:  RAN: '/bin/bash ls' STDOUT: STDERR:/bin/ls: /bin/ls: cannot execute binary file# 不能這么用>>> from sh import ls>>> ls()# hello.txt 1.txt# ls -al>>> ls(a=True, l=True)# ls(al=True) 是不可以的

這操作太復雜了, 項目中使用也太糟心了, 也沒有辦法多個命令同時用.不過可以用別的方式代替

# bash -c command 可以很好的解決這個問題# bash -c "sleep 1 && pwd">>> result = bash(c="pwd", _timeout=1, _cwd="/home")>>> print result# -rw-r--r--@ 1 zhipeng staff 0 10 13 18:30 hello.txt# -rw-r--r--@ 1 zhipeng staff 0 10 13 18:30 1.txt>>> result = bash(c="pwd", _timeout=1, _cwd="/")>>> print result# />>> bash(c="pwd && sleep 2", _timeout=1)Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Python/2.7/site-packages/sh.py", line 1021, in __call__ return RunningCommand(cmd, call_args, stdin, stdout, stderr) File "/Library/Python/2.7/site-packages/sh.py", line 486, in __init__ self.wait() File "/Library/Python/2.7/site-packages/sh.py", line 498, in wait raise TimeoutException(-exit_code)sh.TimeoutException
參數里面可以添加非命令參數. 需要以_開頭, 例如上面的_timeout, _cwd. 詳見sh.py 源碼 還支持以下參數 internal_bufsize, err_bufsize, tee, done, in, decode_errors, tty_in, out, cwd, timeout_signal, bg, timeout, with, ok_code, err, env, no_out,            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沙坪坝区| 虞城县| 江川县| 临汾市| 丰都县| 治多县| 福海县| 临潭县| 靖边县| 五大连池市| 巴塘县| 阿克苏市| 古田县| 白朗县| 稻城县| 新余市| 池州市| 武清区| 绍兴市| 德江县| 怀集县| 博客| 永登县| 中山市| 桐乡市| 高阳县| 馆陶县| 六枝特区| 昌宁县| 内丘县| 马山县| 鄄城县| 丹巴县| 斗六市| 高邑县| 大冶市| 尤溪县| 西城区| 镇沅| 察隅县| 克拉玛依市|