精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux 平臺下 Python 腳本編程入門(二)

開發 前端
本篇中,我們會討論控制流(根據用戶輸入的信息、計算的結果,或者一個變量的當前值選擇不同的動作行為)和循環(自動重復執行任務),接著應用我們目前所學東西來編寫一個簡單的 shell 腳本,這個腳本會顯示操作系統類型、主機名、內核版本、版本號和機器硬件架構。

在“Linux 平臺下 Python 腳本編程入門” 系列之前的文章里,我們向你介紹了 Python 的簡介,它的命令行 shell 和 IDLE(LCTT 譯注:python 自帶的一個 IDE)。我們也演示了如何進行算術運算、如何在變量中存儲值、還有如何打印那些值到屏幕上。***,我們通過一個練習示例講解了面向對象編程中方法和屬性概念。

本篇中,我們會討論控制流(根據用戶輸入的信息、計算的結果,或者一個變量的當前值選擇不同的動作行為)和循環(自動重復執行任務),接著應用我們目前所學東西來編寫一個簡單的 shell 腳本,這個腳本會顯示操作系統類型、主機名、內核版本、版本號和機器硬件架構。

這個例子盡管很基礎,但是會幫助我們證明,比起使用一般的 bash 工具,我們通過發揮 Python 面向對象的特性來編寫 shell 腳本會更簡單些。

換句話說,我們想從這里出發:

  1. # uname -snrvm 

 

 

 

檢查 Linux 的主機名

 

 

用 Python 腳本來檢查 Linux 的主機名

 

或者

 

用腳本檢查 Linux 系統信息

看著不錯,不是嗎?那我們就挽起袖子,開干吧。

Python 中的控制流

如我們剛說那樣,控制流允許我們根據一個給定的條件,選擇不同的輸出結果。在 Python 中最簡單的實現就是一個 if/else 語句。

基本語法是這樣的:

  1. if 條件: 
  2.     # 動作 1 
  3. else
  4.     # 動作 2 

當“條件”求值為真(true),下面的代碼塊就會被執行(# 動作 1代表的部分)。否則,else 下面的代碼就會運行。 “條件”可以是任何表達式,只要可以求得值為真或者假。

舉個例子:

  1. 1 < 3 # 真
  2. firstName == "Gabriel" # 對 firstName 為 Gabriel 的人是真,對其他不叫 Gabriel 的人為假
  • 在***個例子中,我們比較了兩個值,判斷 1 是否小于 3。
  • 在第二個例子中,我們比較了 firstName(一個變量)與字符串 “Gabriel”,看在當前執行的位置,firstName 的值是否等于該字符串。
  • 條件和 else 表達式都必須跟著一個冒號(:)。
  • 縮進在 Python 中非常重要。同樣縮進下的行被認為是相同的代碼塊。

請注意,if/else 表達式只是 Python 中許多控制流工具的一個而已。我們先在這里了解以下,后面會用在我們的腳本中。你可以在官方文檔中學到更多工具。

Python 中的循環

簡單來說,一個循環就是一組指令或者表達式序列,可以按順序一直執行,只要條件為真,或者對列表里每個項目執行一一次。

Python 中最簡單的循環,就是用 for 循環迭代一個給定列表的元素,或者對一個字符串從***個字符開始到執行到***一個字符結束。

基本語句:

  1. for x in example: 
  2.     # do this 

這里的 example 可以是一個列表或者一個字符串。如果是列表,變量 x 就代表列表中每個元素;如果是字符串,x 就代表字符串中每個字符。

 

  1. >>> rockBands = [] 
  2. >>> rockBands.append("Roxette"
  3. >>> rockBands.append("Guns N' Roses"
  4. >>> rockBands.append("U2"
  5. >>> for x in rockBands: 
  6.         print(x) 
  7. 或 
  8. >>> firstName = "Gabriel" 
  9. >>> for x in firstName: 
  10.         print(x) 

上面例子的輸出如下圖所示:

 

學習 Python 中的循環

Python 模塊

很明顯,必須有個辦法將一系列的 Python 指令和表達式保存到文件里,然后在需要的時候取出來。

準確來說模塊就是這樣的。比如,os 模塊提供了一個到操作系統的底層的接口,可以允許我們做許多通常在命令行下執行的操作。

沒錯,os 模塊包含了許多可以用來調用的方法和屬性,就如我們之前文章里講解的那樣。不過,我們需要使用 import 關鍵詞導入(或者叫包含)模塊到運行環境里來:

  1. >>> import os 

我們來打印出當前的工作目錄:

  1. >>> os.getcwd() 

 

 


 

 

學習 Python 模塊

現在,讓我們把這些結合在一起(包括之前文章里討論的概念),編寫需要的腳本。

Python 腳本

以一段聲明文字開始一個腳本是個不錯的想法,它可以表明腳本的目的、發布所依據的許可證,以及一個列出做出的修改的修訂歷史。盡管這主要是個人喜好,但這會讓我們的工作看起來比較專業。

這里有個腳本,可以輸出這篇文章最前面展示的那樣。腳本做了大量的注釋,可以讓大家可以理解發生了什么。

在進行下一步之前,花點時間來理解它。注意,我們是如何使用一個 if/else 結構,判斷每個字段標題的長度是否比字段本身的值還大。

基于比較結果,我們用空字符去填充一個字段標題和下一個之間的空格。同時,我們使用一定數量的短線作為字段標題與其值之間的分割符。

  1. #!/usr/bin/python3 
  2. # 如果你沒有安裝 Python 3 ,那么修改這一行為 #!/usr/bin/python 
  3. # Script name: uname.py 
  4. # Purpose: Illustrate Python OOP capabilities to write shell scripts more easily 
  5. # License: GPL v3 (http://www.gnu.org/licenses/gpl.html) 
  6. # Copyright (C) 2016 Gabriel Alejandro Cánepa 
  7. # Facebook / Skype / G+ / Twitter / Github: gacanepa 
  8. # Email: gacanepa (at) gmail (dot) com 
  9. # This program is free software: you can redistribute it and/or modify 
  10. # it under the terms of the GNU General Public License as published by 
  11. # the Free Software Foundation, either version 3 of the License, or 
  12. # (at your optionany later version. 
  13. # This program is distributed in the hope that it will be useful, 
  14. # but WITHOUT ANY WARRANTY; without even the implied warranty of 
  15. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  16. # GNU General Public License for more details. 
  17. # You should have received a copy of the GNU General Public License 
  18. # along with this program.  If not, see . 
  19. # REVISION HISTORY 
  20. DATE        VERSION AUTHOR         CHANGE DESCRIPTION 
  21. ---------- ------- -------------- 
  22. # 2016-05-28 1.0     Gabriel Cánepa    Initial version 
  23. ### 導入 os 模塊 
  24. import os 
  25. ### 將 os.uname() 的輸出賦值給 systemInfo 變量 
  26. ### os.uname() 會返回五個字符串元組(sysname, nodename, release, version, machine) 
  27. ### 參見文檔:https://docs.python.org/3.2/library/os.html#module-os 
  28. systemInfo = os.uname() 
  29. ### 這是一個固定的數組,用于描述腳本輸出的字段標題 
  30. headers = ["Operating system","Hostname","Release","Version","Machine"
  31. ### 初始化索引值,用于定義每一步迭代中 
  32. ### systemInfo 和字段標題的索引 
  33. index = 0 
  34. ### 字段標題變量的初始值 
  35. caption = "" 
  36. ### 值變量的初始值 
  37. values = "" 
  38. ### 分隔線變量的初始值 
  39. separators = "" 
  40. ### 開始循環 
  41. for item in systemInfo: 
  42.     if len(item) < len(headers[index]): 
  43.      ### 一個包含橫線的字符串,橫線長度等于item[index] 或 headers[index
  44.      ### 要重復一個字符,用引號圈起來并用星號(*)乘以所需的重復次數  
  45.      separators = separators + "-" * len(headers[index]) + " " 
  46.      caption = caption + headers[index] + " " 
  47.      values = values + systemInfo[index] + " " * (len(headers[index]) - len(item)) + " " 
  48.     else
  49.      separators = separators + "-" * len(item) + " " 
  50.      caption =  caption + headers[index] + " " * (len(item) - len(headers[index]) + 1) 
  51.      values = values + item + " " 
  52.     ### 索引加 1 
  53.     index = index + 1 
  54. ### 終止循環 
  55. ### 輸出轉換為大寫的變量(字段標題)名 
  56. print(caption.upper()) 
  57. ### 輸出分隔線 
  58. print(separators) 
  59. # 輸出值(systemInfo 中的項目) 
  60. print(values
  61. ### 步驟: 
  62. ### 1) 保持該腳本為 uname.py (或任何你想要的名字) 
  63. ### 并通過如下命令給其執行權限: 
  64. ### chmod +x uname.py 
  65. ### 2) 執行它; 
  66. ### ./uname.py 

如果你已經按照上述描述將上面的腳本保存到一個文件里,并給文件增加了執行權限,那么運行它:

  1. # chmod +x uname.py 
  2. # ./uname.py 

如果試圖運行腳本時你得到了如下的錯誤:

  1. -bash: ./uname.py: /usr/bin/python3: bad interpreter: No such file or directory 

這意味著你沒有安裝 Python3。如果那樣的話,你要么安裝 Python3 的包,要么替換解釋器那行(如果如之前文章里概述的那樣,跟著下面的步驟去更新 Python 執行文件的軟連接,要特別注意并且非常小心):

  1. #!/usr/bin/python3 

  1. #!/usr/bin/python 

這樣會通過使用已經安裝好的 Python 2 去執行該腳本。

注意:該腳本在 Python 2.x 與 Pyton 3.x 上都測試成功過了。

盡管比較粗糙,你可以認為該腳本就是一個 Python 模塊。這意味著你可以在 IDLE 中打開它(File → Open… → Select file):

 

在 IDLE 中打開 Python

一個包含有文件內容的新窗口就會打開。然后執行 Run → Run module(或者按 F5)。腳本的輸出就會在原始的 Shell 里顯示出來:

 

執行 Python 腳本

如果你想純粹用 bash 寫一個腳本,也獲得同樣的結果,你可能需要結合使用 awk、sed,并且借助復雜的方法來存儲與獲得列表中的元素(不要忘了使用 tr 命令將小寫字母轉為大寫)。

另外,在所有的 Linux 系統版本中都至少集成了一個 Python 版本(2.x 或者 3.x,或者兩者都有)。你還需要依賴 shell 去完成同樣的目標嗎?那樣你可能需要為不同的 shell 編寫不同的版本。

這里演示了面向對象編程的特性,它會成為一個系統管理員得力的助手。

注意:你可以在我的 Github 倉庫里獲得 這個 python 腳本(或者其他的)。

總結

這篇文章里,我們講解了 Python 中控制流、循環/迭代、和模塊的概念。我們也演示了如何利用 Python 中面向對象編程的方法和屬性來簡化復雜的 shell 腳本。

你有任何其他希望去驗證的想法嗎?開始吧,寫出自己的 Python 腳本,如果有任何問題可以咨詢我們。不必猶豫,在分割線下面留下評論,我們會盡快回復你。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2016-08-22 21:53:06

LinuxPython腳本

2023-08-23 12:12:45

BashLinux

2011-01-07 16:35:53

2011-04-01 09:06:49

WebDAV協作平臺

2019-06-18 15:28:24

TomcatLinux優化

2011-09-27 13:52:41

2010-06-03 11:23:41

Linuxbind9

2009-08-30 15:12:34

ODULinuxUnix平臺

2017-08-09 16:27:59

LinuxWMware虛擬機

2011-02-25 16:54:54

CentOSpureftpd搭建

2013-03-19 09:27:37

MongoDB

2022-04-11 09:39:58

Linux進程編程

2011-07-28 09:28:37

2013-12-11 16:34:38

LinuxLotus Domin集群

2010-11-15 10:24:24

啟動Oracle數據庫

2018-03-19 10:50:26

2009-07-01 18:25:50

架設JSP

2011-11-08 16:31:10

Java

2009-02-25 09:05:27

2023-05-20 17:45:25

LinuxShell
點贊
收藏

51CTO技術棧公眾號

欧美精品高清| 精品无吗乱吗av国产爱色| 欧美黄污视频| 日韩av在线免播放器| 免费观看日韩毛片| 99reav在线| 成人免费视频网站在线观看| 欧日韩在线观看| 99鲁鲁精品一区二区三区| 国产乱人伦精品一区| 欧美吞精做爰啪啪高潮| 欧美一区二区视频在线播放| 久久免费看视频| 国产精品夜夜嗨| 国产精品大片wwwwww| 久久久久免费看| 成人区精品一区二区婷婷| 日韩久久久精品| 午夜免费高清视频| 国产高清视频色在线www| 国产精品乱子久久久久| 久久精品国产综合精品| 国产免费久久久| 丝袜亚洲另类丝袜在线| 久久久欧美一区二区| 成人高潮免费视频| 欧美伦理在线视频| 亚洲精品视频网上网址在线观看| 亚洲制服中文字幕| 97人人做人人爽香蕉精品| 午夜精品久久一牛影视| 在线视频一二三区| 在线毛片网站| 国产午夜精品一区二区| 免费不卡亚洲欧美| 手机在线观看免费av| 国产精品中文字幕日韩精品| 国产精品网红直播| 国产精华7777777| 性色一区二区| 57pao国产成人免费| 久久久久久久99| 欧美天天视频| 色综合视频一区中文字幕| 精品一区二区在线观看视频| 欧美少妇性xxxx| 永久555www成人免费| aaaaa一级片| 丝袜美腿一区二区三区动态图| 精品精品国产高清a毛片牛牛| 一级片黄色免费| 91精品亚洲一区在线观看| 欧美日韩国产高清一区二区三区 | 偷拍亚洲欧洲综合| www.一区二区.com| 黄色污污视频在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲人成77777| 思思99re6国产在线播放| 国产精品三级视频| 在线丝袜欧美日韩制服| 黄色片网站在线| 亚洲男人的天堂在线aⅴ视频| 最新黄色av网站| 在线观看wwwxxxx| 亚洲国产人成综合网站| 丰满少妇久久久| www.成人爱| 欧洲人成人精品| 成人黄色一级大片| 亚洲va欧美va人人爽成人影院| 日韩精品一区二区三区视频播放 | 少妇一级淫免费放| 在线日韩三级| 欧美电影免费观看完整版| 扒开伸进免费视频| 免费一区二区三区视频导航| 一区二区三区日韩在线| 91麻豆免费视频网站| 亚洲小说欧美另类婷婷| 日本欧美一级片| 亚洲永久精品视频| 国产 欧美在线| 欧美极品色图| 好操啊在线观看免费视频| 亚洲黄网站在线观看| 香港三级韩国三级日本三级| 精品网站在线| 日韩欧美国产综合| 欧美特黄一区二区三区| 婷婷伊人综合| 97超级碰碰人国产在线观看| 一级黄色在线观看| 国产尤物一区二区在线| 狠狠色伊人亚洲综合网站色| 国产在线高清| 亚洲综合精品自拍| 成人在线看视频| 欧美一区一区| 亚洲欧洲第一视频| 久久久久久久久久一区二区三区| 视频一区二区三区在线| 不卡视频一区二区三区| 国产在线色视频| 亚洲国产精品视频| 亚洲天堂国产视频| 日韩精品福利一区二区三区| 久久精品国产精品| 日本视频免费观看| 国产99精品国产| 视频一区视频二区视频三区视频四区国产 | 老司机精品在线| 中文字幕在线视频日韩| wwwxxx亚洲| 国产.精品.日韩.另类.中文.在线.播放| 欧美午夜精品久久久久久蜜| 先锋影音在线资源站91| 欧美视频自拍偷拍| 四虎永久免费影院| 亚洲视频碰碰| 99高清视频有精品视频| 2017亚洲天堂1024| 日韩欧美在线视频观看| 亚洲一区二区在线免费| 牛牛国产精品| 成人久久久久久久| 成人不用播放器| 欧美性xxxxxx| 女同性恋一区二区三区| 久久久久久久久国产一区| 国产精品va在线播放我和闺蜜| 好吊色一区二区三区| 亚洲男同1069视频| 亚洲精品久久久久久宅男| 精品久久网站| 国产99久久精品一区二区永久免费 | 小黄鸭精品aⅴ导航网站入口| 精品国精品国产| 亚洲欧美一区二区三区四区五区| 美美哒免费高清在线观看视频一区二区| 蜜桃999成人看片在线观看| www555久久| 精品免费日韩av| 国产亚洲欧美精品久久久www| 久久99国产乱子伦精品免费| 一区二区三区av在线| 欧美v亚洲v综合v国产v仙踪林| 国产午夜精品免费一区二区三区| 日韩一区二区视频在线| 久久在线观看免费| 国产a级一级片| 九九久久电影| 国产精品免费小视频| 福利成人在线观看| 欧美日韩一级大片网址| 国产一区二区三区视频播放| 美女网站色91| 超碰在线免费观看97| 亚洲一区二区小说| 欧美床上激情在线观看| 亚洲国产精品二区| 午夜av电影一区| 熟女少妇一区二区三区| 久久综合九色| 性欧美18一19内谢| 超碰精品在线观看| 日韩av免费在线观看| 精品美女视频在线观看免费软件| 欧美性生活影院| 希岛爱理中文字幕| 成人sese在线| 国产v亚洲v天堂无码久久久| 久久精品99久久无色码中文字幕| 成人激情免费在线| 日本在线视频网址| 亚洲免费av片| 国产精品毛片一区视频播| 一区二区三区在线视频播放| 国产十八熟妇av成人一区| 香蕉成人久久| 宅男噜噜99国产精品观看免费| 麻豆视频久久| 奇米4444一区二区三区| 在线看免费av| 日韩成人中文字幕在线观看| 伊人成年综合网| 亚洲精选视频在线| 青青草视频成人| 精品一区二区三区视频| 自拍日韩亚洲一区在线| 欧美一级本道电影免费专区| 91精品视频免费| 日本不卡1234视频| www.99久久热国产日韩欧美.com| 黄色av一区二区三区| 在线这里只有精品| 免费网站看av| 欧美韩国日本一区| 国产婷婷在线观看| 免费高清在线一区| 大陆极品少妇内射aaaaa| 日韩在线观看一区 | 日本天堂在线播放| 日韩电影免费在线看| 日本欧美视频在线观看| 欧美一级淫片| 九九九九久久久久| 色播一区二区| 国产欧美日韩免费看aⅴ视频| 成年人视频免费在线播放| 神马久久桃色视频| 日韩资源在线| 亚洲成色999久久网站| 一区二区国产欧美| 欧美性生交大片免费| 久久精品国产亚洲AV无码男同 | 亚洲第一偷拍网| 国产精品乱码一区二区| 欧美性猛交xxxx乱大交退制版| 国产视频91在线| 一区二区三区久久| 久艹在线观看视频| 国产精品水嫩水嫩| 成人在线一级片| 99re这里只有精品6| 男人的天堂免费| 国产专区欧美精品| 超碰超碰在线观看| 日本 国产 欧美色综合| 久久久久狠狠高潮亚洲精品| 亚洲日本黄色| 国产日韩欧美精品在线观看| 欧美三级网页| 日韩a级黄色片| 欧美日韩综合| 国产av熟女一区二区三区| 欧美精品不卡| 妺妺窝人体色www看人体| 自产国语精品视频| 糖心vlog在线免费观看| 中文字幕一区二区三区在线视频| 特级毛片在线免费观看| 色小子综合网| 亚洲ai欧洲av| 久久神马影院| 一区二区免费在线视频| 午夜精品视频一区二区三区在线看| 天天人人精品| 99九九热只有国产精品| 一区二区精品视频| 综合激情一区| 男人添女荫道口图片| 99精品国产福利在线观看免费| 国产美女主播在线| 国产精品最新自拍| 男人天堂成人在线| 美女一区二区三区在线观看| 亚洲精品手机在线观看| 国产一区不卡视频| 在线中文字日产幕| 91在线观看污| 变态另类ts人妖一区二区| 国产精品午夜在线| 中文字幕亚洲欧美日韩| 亚洲成人手机在线| 一级做a爰片久久毛片| 精品视频资源站| 国产精品主播一区二区| 精品久久久久一区二区国产| 手机看片福利在线| 中文字幕亚洲综合| 岛国毛片av在线| 日韩av电影免费观看高清| 青青青国产精品| 成人久久18免费网站漫画| 日韩成人午夜| 亚洲黄色成人久久久| 欧美女人交a| 国产v亚洲v天堂无码久久久| 国产一区二区视频在线| 国产真实乱人偷精品| 国产欧美日韩三区| 妺妺窝人体色www婷婷| 色综合久久久久| 国产在成人精品线拍偷自揄拍| 精品国产伦一区二区三区观看方式| 青青草在线免费观看| 久久精品99久久久香蕉| h片在线观看视频免费| 国产精品丝袜久久久久久高清| 日韩精品一区二区三区中文字幕 | 欧美日韩中文字幕综合视频| 在线观看色网站| 亚洲国产99精品国自产| 色欧美激情视频在线| 午夜精品视频网站| 国产高清亚洲| 欧美精品人人做人人爱视频| 亚洲欧美在线专区| 麻豆av免费在线| 成人免费的视频| 欧美视频一区二区在线| 天天色 色综合| 国产农村老头老太视频| 亚洲美女性生活视频| 国精一区二区三区| 国产欧美精品一区二区| 奇米亚洲欧美| 青青青免费在线| 国产传媒欧美日韩成人| 在线视频这里只有精品| 狠狠干狠狠久久| 亚洲精品视频网| 久久影院模特热| 电影亚洲一区| 欧美精品v日韩精品v国产精品| 午夜视频一区| 在线视频日韩欧美| 国产精品久久久久影院亚瑟| av网站中文字幕| 亚洲国产成人精品久久| 1区2区3区在线视频| 成人a级免费视频| 欧美激情777| 黄色三级视频在线| 国产婷婷色一区二区三区在线| 国产午夜精品一区二区理论影院| 9191久久久久久久久久久| 高清毛片在线看| 国产精品久久久久久久久免费看 | 免费看av软件| 蜜桃视频在线观看一区二区| 国产 欧美 在线| 色久综合一二码| 韩国中文免费在线视频| 国产97在线|日韩| 国产欧美日韩视频在线| 免费在线激情视频| 91免费国产在线| 欧美性猛交bbbbb精品| 日韩精品一区二区视频| 女人高潮被爽到呻吟在线观看| 国产精品区二区三区日本| 亚洲视频精品| 成人免费无码大片a毛片| 午夜日韩在线电影| 日日夜夜精品免费| 97人人做人人爱| 亚洲男人都懂第一日本| 青青青在线播放| 日本一区二区三区在线不卡 | 精品国产网站在线观看| 污污视频在线看| 国产精品视频免费一区| 激情综合电影网| 午夜一区二区三区免费| 色综合天天综合狠狠| 波多野结衣在线影院| 国产免费一区二区三区在线能观看| 成人在线免费观看91| 韩国一区二区在线播放| 亚洲一区二区欧美| 免费在线黄色影片| 国产精品久久久久9999| 午夜影院欧美| 亚洲av午夜精品一区二区三区| 午夜精品一区在线观看| 免费人成黄页在线观看忧物| 国产精品久久久久久久久借妻| 午夜av一区| 少妇一级淫片免费放播放| 日本韩国一区二区三区| 免费在线看黄| 国产伦精品一区二区三区视频免费| 亚洲午夜极品| 国产一级久久久久毛片精品| 欧美久久久久久久久中文字幕| 色呦呦在线播放| 欧美日本国产精品| 国产一区日韩二区欧美三区| 久久免费少妇高潮99精品| 亚洲免费视频在线观看| www.久久热| 欧美老熟妇喷水| 自拍偷在线精品自拍偷无码专区| 天天摸天天碰天天爽天天弄| 国产精品美乳一区二区免费 | 精品国产aⅴ| 日本黄色www| 在线免费不卡视频| 色呦呦在线视频| 亚洲欧洲日本国产| jvid福利写真一区二区三区| 中文字幕在线观看高清| 久久久久久久久久久免费精品| 欧美限制电影| 在线观看av中文字幕| 91麻豆精品91久久久久同性| 大胆人体一区| 国产成a人亚洲精v品在线观看|