當前位置: 華文頭條 > 推薦

python自動化指令碼,解放你的雙手(4)

2024-03-22推薦

透過前面幾章的學習,我們學會了如何使用python指令碼,對作業系統執行檔資料夾的增刪改查,執行作業系統系統命令並使用正規表式處理返回結果,並對返回結果進行二次加工和使用。

本次,我們為了使我們的python自動化指令碼更為靈活,我們就需要學習下如何使我們的python指令碼處理外部輸入 和輸出,透過外部輸入的不同,來控制指令碼的不同功能。

最簡單的輸入範例:

name = input("Please input a name: ")print("Hello, ", name)

執行結果如上圖所示

下面我們來一個稍微復雜點的範例:

def to_seconds(hours, minutes, seconds): return hours*3600 + minutes*60 + secondsprint("Welcome to this time converter")cont = "y"while cont.lower() == "y": hours = int(input("Enter the number of hours: ")) minutes = int(input("Enter the number of minutes: ")) seconds = int(input("Enter the number of seconds: ")) print("That's {} seconds".format(to_seconds(hours, minutes, seconds))) print() cont = input("Do you want to do another conversion? [y to continue] ")print("Good bye!")

執行結果如下所示:

執行結果

輸入y可以繼續進行時間轉換,輸出其它任意字元結束。

這裏比較關鍵的兩個函數的使用:

  1. input 函數, 括弧內為提示字串,會讀取標準輸入並返回一個字串類別的變量
  2. int 函數, 可以對字串入參進行類別轉換,轉換為int類別,參與運算

上面的python基本函數使用,如果大家感興趣,後續多開幾期給大家講解。

下面我們介紹第二種外部輸入方式,那就是linux 系統的環境變量 。

程式碼範例如下:

>>> import os>>> print("HOME: " + os.environ.get("HOME", ""))HOME: /home/chen // 打印結果>>> print("SHELL: " + os.environ.get("SHELL", ""))SHELL: /bin/bash // 打印結果>>> print("FRUIT: " + os.environ.get("FRUIT", ""))FRUIT: // 環境變量中沒有FRUIT變量,直接返回空字串

如果我們想讓FRUIT 有值,則可以在linux shell中執行export 命令,匯出FRUIT變量,然後嘗試一下。

如下圖所示:

匯出環境變量FRUIT

再次嘗試使用python指令碼打印FRUIT 環境變量的值,結果如下:

>>> print("FRUIT: " + os.environ.get("FRUIT", ""))FRUIT: Apple // export 變量之後,我們就可以讀取到結果了

我們可以透過os.environ 方法獲取作業系統當前環境變量資訊,這也是我們在進行自動化指令碼編寫過程中, 一個重要的輸入來源。

下面我們介紹第三種輸入方式,那就是命令列參數 ,我們經常會使用命令列參數進行一些自訂資訊的傳入。

如下,我們做了一個最簡單的命令列輸入參數打印:

import sysprint(sys.argv) // 打印所有命令列參數

執行結果

使用效果如上圖所示,能夠獲取到所有命令列參數。

實際上,我們的sys.argv 參數是一個python 的列表,我們可以根據下標直接獲取任何一個輸入參數的值。

python test.py one two three // 執行python指令碼,帶三個命令列參數print(sys.argv[1])// 會打印one

好了,綜上,python的輸入資訊的幾種方式我們就講完了,大體來說分為三種。

  1. 透過input 等,使用者互動輸入
  2. 透過os.environ,直接獲取系統環境變量
  3. 透過sys.argv 獲取執行python指令碼時的命令列參數

最後,我們看下python 指令碼的輸出,即返回值,正常執行完python指令碼,都會返回0。

不過如果,我們的python指令碼有錯誤的話,那麽需要返回非零數值以表示指令碼執行存在報錯。

我們通常會使用sys.exit() 函數進行錯誤處理,並返回非零值。

下面看一個例子:

import osimport sysfilename = sys.argv[1]if not os.path.exists(filename): with open(filename, "w") as f: f.write("New file created\n")else: print("Error, the file {} already exists".format(filename)) sys.exit(1)// 此處就是如果檔存在,則直接返回非0值// 表示python指令碼執行失敗返回

好的,今天我們暫時就講這麽多,今天的內容最好跟前幾期連貫在一起進行融匯貫通,那麽這樣的話,你就基本掌握了如何寫好一個python自動化指令碼的大多數基本技能了。

最後,還是那句話,你的關註點贊就是我更新的動力。。如果大家有什麽想要學習的內容,卻又苦於無處下手,關註我,留言即可,我隨時寫文章進行分享。