最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python常用外部指令執(zhí)行代碼實例

 更新時間:2020年11月05日 11:40:43   作者:南風(fēng)丶輕語  
這篇文章主要介紹了Python常用外部指令執(zhí)行代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

1、os.system()

阻塞

屏幕會打印命令的輸出

返回命令結(jié)果碼

# -*- encoding=utf-8 -*-
import os
if __name__ == '__main__':
  pass
  print('開始')
  ret1 = os.system('python')
  print('ret1:{}'.format(ret1))
  ret2 = os.system('java -version')
  print('ret2:{}'.format(ret2))
  print('結(jié)束')

運行

可能有人理解阻塞是因為運行了python,因此我嘗試兩個命令都用java -version

# -*- encoding=utf-8 -*-

import os

if __name__ == '__main__':
  pass
  print('開始')
  ret1 = os.system('java -version')
  print('ret1:{}'.format(ret1))
  ret2 = os.system('java -version')
  print('ret2:{}'.format(ret2))
  print('結(jié)束')

運行

2、os.popen()

阻塞或不阻塞

屏幕不會打印出命令的輸出

返回文件對象,可用read,readline讀取

不阻塞時:

# -*- encoding=utf-8 -*-
import os
if __name__ == '__main__':
  pass
  print('開始')
  os.popen('python')
  ret2 = os.popen('java -version')
  print('結(jié)束')

運行(程序很快打印開始和結(jié)束,就像只用了兩個print語句一樣快)

阻塞時:

# -*- encoding=utf-8 -*-
import os
if __name__ == '__main__':
  pass
  print('開始')
  ret1 = os.popen('python')
  print(ret1.read())
  ret2 = os.popen('java -version')
  print(ret2.read())
  print('結(jié)束')

運行

3、commands.getstatusoutput

python2.+中使用

需要到linux運行

阻塞或者非阻塞

屏幕不會打印出命令的輸出

非阻塞時

# -*- encoding=utf-8 -*-
import commands
if __name__ == '__main__':
  pass
  print('開始')
  ret1 = commands.getstatusoutput('python')
  ret2 = commands.getstatusoutput('java -version')
  print('結(jié)束')

運行

阻塞時:

# -*- encoding=utf-8 -*-
import commands
if __name__ == '__main__':
  pass
  print('開始')
  ret1 = commands.getstatusoutput('python')
  print ret1[0]
  print ret1[1]
  print '=============='
  ret2 = commands.getstatusoutput('java -version')
  print ret2[0]
  print ret2[1]
  print '=============='
  print('結(jié)束')

運行

4、subprocess中Popen

阻塞或非阻塞,同上面一樣,通過是否讀取IO決定是否阻塞

屏幕會打印出命令的輸出

可通過stdout,stderr參數(shù)指定輸出或錯誤打印到文件

# -*- encoding=utf-8 -*-
import subprocess
if __name__ == '__main__':
  pass
  print('開始')
  s1 = subprocess.Popen('python')
  s1.wait()
  s2 = subprocess.Popen('java -version')
  s2.wait()
  print('結(jié)束')

運行

4.1、 輸出到文件

通過文件對象來輸出到文件中

# -*- encoding=utf-8 -*-
import subprocess
if __name__ == '__main__':
  pass
  print('開始')
  with open('s1.txt', 'w') as f:
    s1 = subprocess.Popen('python', stdout=f, ) # 指定輸出重定向到文件
    s1.wait(10) # 超過10秒還沒執(zhí)行完會拋出異常
  with open('s2.txt', 'w') as f:
    s2 = subprocess.Popen('java -version', stdout=f, stderr=f) # 指定輸出和錯誤都重定向到文件
    s2.wait()
  print('結(jié)束')

運行后可看到文件已經(jīng)寫入,屏幕不打印。需要注意是stdout還是stderr。

4.2、捕獲輸出和錯誤

PIPE通過開一個新的管道來接收運行狀態(tài)

# -*- encoding=utf-8 -*-

import subprocess

if __name__ == '__main__':
  pass
  print('開始')
  s1 = subprocess.Popen('java -version', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  s1.wait(10) # 超過10秒還沒執(zhí)行完會拋出異常
  print(s1.returncode) # 結(jié)果碼
  print(s1.poll()) # 已經(jīng)執(zhí)行結(jié)束返回結(jié)果碼,否則返回None
  std1 = s1.stdout.read()
  print('std_out:{}'.format(std1))
  std2 = s1.stderr.read()
  print('std_err:{}'.format(std2))
  print('結(jié)束')

運行

5、subprocess.call

用來替代os.system

阻塞

# -*- encoding=utf-8 -*-
import subprocess
if __name__ == '__main__':
  pass
  print('開始')
  s1 = subprocess.call('java -version', )
  print(s1)
  s2 = subprocess.call('python', )
  print(s2)
  s3 = subprocess.call('python', timeout=3) # 超時拋出異常
  print(s3)
  print('結(jié)束')

6、check_call()和check_output()

都會檢查結(jié)果碼,不是0就拋出異常

check_call()返回狀態(tài)碼

check_output()返回輸出

# -*- encoding=utf-8 -*-
import subprocess
if __name__ == '__main__':
  pass
  print('開始')
  s1 = subprocess.check_call('java -version', )
  print(s1)
  s2 = subprocess.check_output('java -version', )
  print(s2)
  print('結(jié)束')

運行

使用上面提到的三個方法:call()、check_call() 和 check_output() 時,盡量不要將參數(shù)stderr和stdout設(shè)置為 subprocess.PIPE,這幾個函數(shù)默認都會等待子進程完成,子進程產(chǎn)生大量的輸出數(shù)據(jù)如果造成管道堵塞,父進程再等待子進程完成可能造成死鎖。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python點云地面點濾波(Progressive Morphological Filter)算法介紹(PCL庫)

    python點云地面點濾波(Progressive Morphological Filter)算法介紹(PCL庫)

    這篇文章主要介紹了python點云地面點濾波(Progressive Morphological Filter)算法介紹(PCL庫),了解膨脹/腐蝕這兩個基礎(chǔ)操作,可以通過對其進行簡單組合來形成開/閉操作,需要的朋友可以參考下
    2021-08-08
  • python爬蟲爬取網(wǎng)頁數(shù)據(jù)并解析數(shù)據(jù)

    python爬蟲爬取網(wǎng)頁數(shù)據(jù)并解析數(shù)據(jù)

    這篇文章主要介紹了python爬蟲如何爬取網(wǎng)頁數(shù)據(jù)并解析數(shù)據(jù),幫助大家更好的利用爬蟲分析網(wǎng)頁,感興趣的朋友可以了解下
    2020-09-09
  • 利用python求解物理學(xué)中的雙彈簧質(zhì)能系統(tǒng)詳解

    利用python求解物理學(xué)中的雙彈簧質(zhì)能系統(tǒng)詳解

    這篇文章主要給大家介紹了關(guān)于利用python如何求解物理學(xué)中的雙彈簧質(zhì)能系統(tǒng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • django template 模板渲染的實現(xiàn)

    django template 模板渲染的實現(xiàn)

    Django 的模板系統(tǒng)旨在使設(shè)計人員能夠編寫 HTML,同時以一種安全和靈活的方式動態(tài)顯示數(shù)據(jù),本文主要介紹了django template模板渲染的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2025-01-01
  • PyTorch零基礎(chǔ)入門之邏輯斯蒂回歸

    PyTorch零基礎(chǔ)入門之邏輯斯蒂回歸

    PyTorch是一個開源的Python機器學(xué)習(xí)庫,基于Torch,用于自然語言處理等應(yīng)用程序,它是一個可續(xù)計算包,提供兩個高級功能:1、具有強大的GPU加速的張量計算(如NumPy)。2、包含自動求導(dǎo)系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)
    2021-10-10
  • python 辦公自動化——基于pyqt5和openpyxl統(tǒng)計符合要求的名單

    python 辦公自動化——基于pyqt5和openpyxl統(tǒng)計符合要求的名單

    前幾天接到的一個需求,因為學(xué)校給的名單是青年大學(xué)習(xí)已學(xué)習(xí)的名單,然而要知道未學(xué)習(xí)的名單只能從所有團員中再排查一次,過程相當(dāng)麻煩。剛好我也學(xué)過一些操作辦公軟件的基礎(chǔ),再加上最近在學(xué)pyqt5,所以我決定用python寫個自動操作文件的腳本給她用用。
    2021-05-05
  • Python發(fā)起請求提示UnicodeEncodeError錯誤代碼解決方法

    Python發(fā)起請求提示UnicodeEncodeError錯誤代碼解決方法

    這篇文章主要介紹了Python發(fā)起請求提示UnicodeEncodeError錯誤代碼解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • 如何通過python檢查文件是否被占用

    如何通過python檢查文件是否被占用

    這篇文章主要介紹了如何通過python檢查文件是否被占用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python使用鄰接矩陣實現(xiàn)圖及Dijkstra算法問題

    Python使用鄰接矩陣實現(xiàn)圖及Dijkstra算法問題

    這篇文章主要介紹了Python使用鄰接矩陣實現(xiàn)圖及Dijkstra算法問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 用Python簡陋模擬n階魔方

    用Python簡陋模擬n階魔方

    這篇文章主要介紹了用Python簡陋模擬n階魔方,文中有非常詳細的代碼示例,對正在學(xué)習(xí)python的小伙伴呢有一定的幫助,需要的朋友可以參考下
    2021-04-04

最新評論

舒城县| 师宗县| 岳西县| 宁远县| 上饶市| 沙坪坝区| 鄯善县| 澜沧| 贺兰县| 荣成市| 庆元县| 明星| 确山县| 盱眙县| 林芝县| 温州市| 天台县| 高碑店市| 万盛区| 安义县| 萨嘎县| 和林格尔县| 资源县| 漠河县| 肃北| 珠海市| 林口县| 丰顺县| 兰西县| 威远县| 阿拉善盟| 江口县| 东阳市| 曲麻莱县| 郓城县| 香格里拉县| 广汉市| 托克逊县| 全南县| 阳西县| 正宁县|