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

python執(zhí)行shell腳本的四種方法

 更新時間:2023年06月21日 09:51:20   作者:LoveMIss-Y  
在Python中提供了很多的方法可以調(diào)用并執(zhí)行shell腳本,本文主要介紹了python執(zhí)行shell腳本的四種方法,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧

前言:Python作為一門腳本語言,有時候需要與shell命令交互式使用,在Python中提供了很多的方法可以調(diào)用并執(zhí)行shell腳本,本文做一個簡單的總結。本文的開發(fā)環(huán)境是Ubuntu16.04.

一、os.system(“command”)

這是python自帶的執(zhí)行shell命令的方法,其中最后一個0是這個命令的返回值,為0表示命令執(zhí)行成功。但是使用system()無法將執(zhí)行的結果保存起來。

如下:

import os
print(os.system("touch a.txt"))

會返回一個0,表示執(zhí)行成功了,然后在當前文件夾之下創(chuàng)建了一個新的a.txt文件

再如:

import os
print(os.system("ls -a"))

它也會返回一個0,但是這個命令執(zhí)行的結果卻沒有辦法查看,即system函數(shù)不返回shell命令執(zhí)行的結果。

二、os.popen("command")方法 

上面的os.system()方法沒辦法查看shell命令返回的結果,通過 os.popen() 返回的是 file read 的對象,對其進行讀取 read() 的操作可以看到執(zhí)行的輸出。

注意:os.popen() 返回的是一個文件對象f哦?。?!

如下:

import os
f=os.popen("ls -l")  # 返回的是一個文件對象
print(f.read())            # 通過文件的read()讀取所返回的內(nèi)容
'''
total 4
-rw-rw-r-- 1 tengjian tengjian  0 11月  5 09:32 a.txt
-rw-rw-r-- 1 tengjian tengjian 81 11月  5 09:32 python_shell.py
'''

對于那些沒有返回指的shell命令,我依然也可以使用popen()方法,如下:

import os
f=os.popen("touch b.txt")    # 創(chuàng)建一個文件
# f=os.popen("mkdir newdir") # 創(chuàng)建一個新的文件夾
print(f.read())              # 無返回值

總結:

  • 對于有返回值的shell命令,建議使用 os.popen()
  • 對于沒有返回值的shell命令,建議使用 os.system()

當然除了python系統(tǒng)自帶的os模塊的這兩個方法,還有很多其他的方法可以實現(xiàn)shell命令操作,下面介紹幾個。

三、通過subprocess模塊

subprocess模塊是python從2.4版本開始引入的模塊,也是系統(tǒng)自帶的,不需要再額外安裝了。主要用來取代 一些舊的模塊方法,如os.system、os.spawn*、os.popen*、commands.*等。subprocess通過子進程來執(zhí)行外部指令,并通過input/output/error管道,獲取子進程的執(zhí)行的返回信息。

1 常用方法:

(1)subprocess.call():執(zhí)行命令,并返回執(zhí)行狀態(tài),其中shell參數(shù)為False時,命令以及命令的參數(shù)需要通過列表的方式傳入,當shell為True時,可通過一個字符串直接傳入命令以及命令所需要的參數(shù)

示例如下:

import subprocess
print(subprocess.call(["ls","-l"],shell=False))  # shell參數(shù)為false,則,命令以及參數(shù)以列表的形式給出
'''
total 8
-rw-rw-r-- 1 tengjian tengjian    0 11月  5 09:32 a.txt
-rw-rw-r-- 1 tengjian tengjian    0 11月  5 09:33 b.txt
drwxrwxr-x 2 tengjian tengjian 4096 11月  5 09:32 hahaha
-rw-rw-r-- 1 tengjian tengjian  119 11月  5 10:22 python_shell.py
0
'''

最后一個狀態(tài)0,表示命令執(zhí)行成功。

import subprocess
a=subprocess.call(["ls","-l"],shell=False) # shell參數(shù)為false,則,命令以及參數(shù)以列表的形式給出
print(a)
'''
0  此時只返回0表示執(zhí)行成功
'''

當shell參數(shù)為True的時候:

import subprocess
print(subprocess.call("ls -l",shell=True))  # shell參數(shù)為true,則,命令以及參數(shù)以字符串的形式給出
'''
total 8
-rw-rw-r-- 1 tengjian tengjian    0 11月  5 09:32 a.txt
-rw-rw-r-- 1 tengjian tengjian    0 11月  5 09:33 b.txt
drwxrwxr-x 2 tengjian tengjian 4096 11月  5 09:32 hahaha
-rw-rw-r-- 1 tengjian tengjian  119 11月  5 10:22 python_shell.py
0
'''

當然對于一些沒有返回值的shell命令,也可以同樣的操作,如下:

import subprocess
print(subprocess.call(["touch","c.txt"],shell=False))  # 直接返回0,表示操作成功
print(subprocess.call(["mkdir newdir1"],shell=True))   # 直接返回0,表示操作成功

(2)subprocess.check_call():用法與subprocess.call()類似,區(qū)別是,當返回值不為0時,直接拋出異常,這里不再贅述了。

(3)subprocess.check_output():用法與上面兩個方法類似,區(qū)別是,如果當返回值為0時,直接返回輸出結果,如果返回值不為0,直接拋出異常。需要說明的是,該方法在python3.x中才有。

import os
import subprocess
a=subprocess.check_output(["ls","-l"],shell=False)
print(a)  # 不是直接返回0了,而是直接返回執(zhí)行結果的內(nèi)容
'''
b'total 8\n-rw-rw-r-- 1 tengjian tengjian    0 11\xe6\x9c\x88  5 09:32 a.txt\n-rw-rw-r-- 1 tengjian tengjian    0 11\xe6\x9c\x88  5 09:33 b.txt\n-rw-rw-r-- 1 tengjian tengjian    0 11\xe6\x9c\x88  5 10:25 c.txt\ndrwxrwxr-x 2 tengjian tengjian 4096 11\xe6\x9c\x88  5 09:32 hahaha\n-rw-rw-r-- 1 tengjian tengjian  181 11\xe6\x9c\x88  5 10:33 python_shell.py\n'
'''

注意:subprocess的功能還有更多,比如還有Popen類

subprocess模塊中定義了一個Popen類,通過它可以來創(chuàng)建進程,并與其進行復雜的交互

四、通過sh庫

首先安裝sh庫 :pip install sh

Python 是一種偉大的腳本語言,不過有時使用標準 os 和 subprocess 庫會有點棘手。

sh 庫提供了一種不錯的替代方案。

sh 庫:http://amoffat.github.io/sh/

庫允許用戶像使用普通函數(shù)一樣調(diào)用任意程序,這對自動化工作流和任務非常有用。

它的一般工作模式如下:

sh.command_name("參數(shù)一","參數(shù)二","參數(shù)三")

import sh
sh.pwd()
sh.mkdir( new_folder )
sh.touch( new_file.txt )
sh.whoami()
sh.echo( This is great! )
sh.ls("-l") ? ? ? ? # 等價于 ls -l
print(sh.ls("-l"))
sh.df("-h") ? ? ? ? # 等價于 df -h
print(sh.df("-h"))
# 當有多個參數(shù)的情況,且參數(shù)可以賦值
sh.du("-h","-d 1") ?# 等價于 du -h -d 1
print(sh.du("-h","-d 1"))

注意:上面在通過 sh.** 編寫的時候可能沒有代碼提示,因為sh模塊里面并沒有直接定義 像上面的

pwd(),touch(),du()等這些函數(shù),他是通過其他的方式實現(xiàn)的,所以沒有智能敏感提示。

到此這篇關于python執(zhí)行shell腳本的四種方法的文章就介紹到這了,更多相關python執(zhí)行shell腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 利用Python批量壓縮png方法實例(支持過濾個別文件與文件夾)

    利用Python批量壓縮png方法實例(支持過濾個別文件與文件夾)

    這篇文章主要給大家介紹了關于利用Python批量壓縮png的相關資料,文中介紹的方法支持過濾個別文件與文件夾,文中通過示例代碼介紹的非常詳細,需要的朋友們下面跟著小編來一起看看吧。
    2017-07-07
  • python實現(xiàn)俄羅斯方塊小游戲

    python實現(xiàn)俄羅斯方塊小游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)俄羅斯方塊小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Python 中 -m 的典型用法、原理解析與發(fā)展演變

    Python 中 -m 的典型用法、原理解析與發(fā)展演變

    這篇文章主要介紹了Python 中 -m 的典型用法、原理解析與發(fā)展演變,需要的朋友可以參考下
    2019-11-11
  • Python線性擬合實現(xiàn)函數(shù)與用法示例

    Python線性擬合實現(xiàn)函數(shù)與用法示例

    這篇文章主要介紹了Python線性擬合實現(xiàn)函數(shù)與用法,結合實例形式分析了Python使用線性擬合算法與不使用線性擬合算法的相關算法操作技巧,需要的朋友可以參考下
    2018-12-12
  • python模塊常用用法實例詳解

    python模塊常用用法實例詳解

    由于平時習慣,strftime比較常用,strptime和它是反操作。這篇文章主要介紹了python模塊常用用法,需要的朋友可以參考下
    2019-10-10
  • python實現(xiàn)淘寶購物系統(tǒng)

    python實現(xiàn)淘寶購物系統(tǒng)

    這篇文章主要為大家詳細介紹了python實現(xiàn)簡易的淘寶購物系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Python Pandas學習之數(shù)據(jù)離散化與合并詳解

    Python Pandas學習之數(shù)據(jù)離散化與合并詳解

    Pandas是python的一個數(shù)據(jù)分析包,該工具是為解決數(shù)據(jù)分析任務而創(chuàng)建的。本文將通過示例詳細為大家介紹一下Pandas的數(shù)據(jù)離散化與合并,需要的可以參考一下
    2022-02-02
  • Python實現(xiàn)快速抓取網(wǎng)頁數(shù)據(jù)的5種高效方法

    Python實現(xiàn)快速抓取網(wǎng)頁數(shù)據(jù)的5種高效方法

    在當今大數(shù)據(jù)時代,網(wǎng)頁數(shù)據(jù)抓取(Web Scraping)已成為獲取信息的重要手段,本文將介紹Python中5種快速抓取網(wǎng)頁數(shù)據(jù)的方法,大家可以根據(jù)需要進行選擇
    2025-06-06
  • Python中讀取和加解密PDF文件的詳細教程

    Python中讀取和加解密PDF文件的詳細教程

    在Python中讀取和加密PDF文件是一項常見且實用的任務,尤其對于需要處理大量文檔自動化處理的場景,本文將詳細介紹如何使用Python讀取PDF文件內(nèi)容以及如何使用不同的庫來給PDF文件加密,需要的朋友可以參考下
    2024-08-08
  • python基于turtle繪制幾何圖形

    python基于turtle繪制幾何圖形

    turtle又稱為海龜繪圖,是Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所創(chuàng)造的 Logo 編程語言的python實現(xiàn)。turtle是基于tkinter圖形界面設計的。
    2021-06-06

最新評論

原阳县| 武鸣县| 宣城市| 安平县| 镇原县| 大冶市| 宜兰市| 耒阳市| 嘉峪关市| 腾冲县| 仁化县| 宁晋县| 南丰县| 汕头市| 永顺县| 苍梧县| 布拖县| 昂仁县| 长宁区| 临江市| 白山市| 龙江县| 北川| 酉阳| 中宁县| 交口县| 阳原县| 达拉特旗| 东阿县| 洛宁县| 桓台县| 忻州市| 平泉县| 措美县| 桂阳县| 丰县| 马公市| 道真| 平舆县| 隆化县| 武陟县|