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

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

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

1、os.system()

阻塞

屏幕會(huì)打印命令的輸出

返回命令結(jié)果碼

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

運(yùn)行

可能有人理解阻塞是因?yàn)檫\(yùn)行了python,因此我嘗試兩個(gè)命令都用java -version

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

import os

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

運(yùn)行

2、os.popen()

阻塞或不阻塞

屏幕不會(huì)打印出命令的輸出

返回文件對(duì)象,可用read,readline讀取

不阻塞時(shí):

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

運(yùn)行(程序很快打印開(kāi)始和結(jié)束,就像只用了兩個(gè)print語(yǔ)句一樣快)

阻塞時(shí):

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

運(yùn)行

3、commands.getstatusoutput

python2.+中使用

需要到linux運(yùn)行

阻塞或者非阻塞

屏幕不會(huì)打印出命令的輸出

非阻塞時(shí)

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

運(yùn)行

阻塞時(shí):

# -*- encoding=utf-8 -*-
import commands
if __name__ == '__main__':
  pass
  print('開(kāi)始')
  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é)束')

運(yùn)行

4、subprocess中Popen

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

屏幕會(huì)打印出命令的輸出

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

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

運(yùn)行

4.1、 輸出到文件

通過(guò)文件對(duì)象來(lái)輸出到文件中

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

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

4.2、捕獲輸出和錯(cuò)誤

PIPE通過(guò)開(kāi)一個(gè)新的管道來(lái)接收運(yùn)行狀態(tài)

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

import subprocess

if __name__ == '__main__':
  pass
  print('開(kāi)始')
  s1 = subprocess.Popen('java -version', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  s1.wait(10) # 超過(guò)10秒還沒(méi)執(zhí)行完會(huì)拋出異常
  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é)束')

運(yùn)行

5、subprocess.call

用來(lái)替代os.system

阻塞

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

6、check_call()和check_output()

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

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

check_output()返回輸出

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

運(yùn)行

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

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

相關(guān)文章

  • python點(diǎn)云地面點(diǎn)濾波(Progressive Morphological Filter)算法介紹(PCL庫(kù))

    python點(diǎn)云地面點(diǎn)濾波(Progressive Morphological Filter)算法介紹(PCL庫(kù))

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

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

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

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

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

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

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

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

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

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

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

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

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

    如何通過(guò)python檢查文件是否被占用

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

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

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

    用Python簡(jiǎn)陋模擬n階魔方

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

最新評(píng)論

昌邑市| 博乐市| 凌源市| 旅游| 盖州市| 桐乡市| 饶阳县| 仙桃市| 三亚市| 都江堰市| 石林| 珲春市| 平湖市| 奉节县| 安陆市| 石首市| 霍邱县| 万全县| 科技| 汝阳县| 都昌县| 秦皇岛市| 四平市| 海兴县| 邵东县| 正蓝旗| 延长县| 信阳市| 怀柔区| 镇坪县| 尉氏县| 华坪县| 临安市| 伊宁县| 唐海县| 重庆市| 锡林郭勒盟| 太白县| 调兵山市| 永昌县| 瑞安市|