- Python數據分析基礎
- (美)克林頓·布朗利
- 2015字
- 2020-05-06 16:34:58
1.3 與命令行進行交互的幾項技巧
下面是與命令行進行交互的幾項技巧。
使用向上箭頭鍵得到以前的命令
命令行窗口和終端窗口的一個美妙功能是,你可以通過按向上箭頭鍵找到以前輸入的命令。試著在命令行窗口或終端窗口中按一下向上箭頭鍵,找到你以前輸入的命令,在Windows系統中是python first_script.py,在Mac系統中是./first_script.py。
這個功能非常方便,可以減少每次運行Python腳本時必需的輸入量,特別是當Python腳本的文件名特別長或需要在命令行上提供額外的參數(比如輸入文件名或輸出文件名)的時候。
用Ctrl+c停止腳本
既然你已經學會了運行腳本,那么是時候學習一下如何中斷和停止Python腳本了。在相當多的情況下,你應該知道如何停止腳本。例如,你可能會寫出死循環代碼,這樣腳本就永遠不會停止運行。另外一種情況是,你編寫的代碼可能需要很長時間才能執行完畢,如果你在代碼中包含了print語句,并由此發現腳本不會生成需要的輸出,這時就應該提前終止腳本。
在腳本開始運行之后,如果想隨時中斷或停止腳本,可以按Ctrl+c(Windows)或Control+c(macOS)。這會停止通過命令開始的進程。你不用太在意這項技術的細節,只要知道進程是計算機對一系列命令的處理過程就可以了。你編寫了一個腳本或程序,計算機將它解釋成一個進程,如果這個程序非常復雜,就解釋成一系列進程,這些進程或者順序執行,或者并發執行。
讀懂出錯信息并找到解決方案
這部分的主題是如何處理比較麻煩的腳本,也簡單說一下遇到以下問題應該如何解決。當你輸入了./python first_script.py,或者試圖運行任何一個Python腳本的時候,腳本沒有正確運行,命令行窗口或終端窗口顯示了出錯信息。首先不要慌張,先讀懂出錯信息。某些情況下,出錯信息中明確指出了代碼中出現錯誤的行,你可以將精力集中在這一行上來糾正錯誤(你的文本編輯器或IDE應該設置成顯示行號;如果不自動顯示行號,請在菜單中找一下或在網上快速搜索一下,弄清楚如何顯示行號)。重要的是要知道出錯信息也是編程的一部分,學會編碼也包括學會如何有效地調試程序錯誤。
更重要的是,因為出錯信息是通用的,所以通常很容易學會如何調試程序錯誤。你很可能不是第一個遇到這種錯誤并在網上搜索解決方案的人。最好的做法是將整個錯誤信息(至少是信息的主要部分)復制到搜索引擎(例如:Google或者Bing)上,然后在搜索結果中仔細研究其他人是如何調試這種錯誤的。
熟悉Python內置的異常對象也是非常有幫助的,這樣你就可以識別出標準的出錯信息并知道如何改正錯誤。你可以在Python標準庫頁面(http://docs.python.org/3/library/exceptions.html)找到Python內置的異常,但是在網上通過出錯信息搜索其他人的解決方案也是非常有用的。
向first_script.py添加更多的代碼
現在,為了更熟練地編寫Python代碼和運行Python腳本,試著對first_script.py進行編輯,添加更多的代碼,然后重新運行腳本。在進行新的練習時,可以把本章提供的代碼段添加到腳本中原來代碼的下方,保存腳本,然后重新運行。
舉個例子,將下面的兩段代碼添加到原有的print語句下面,然后保存腳本并重新運行(請記住,如果你使用的是命令行窗口或終端窗口,在將這些代碼添加到first_script.py并重新保存腳本之后,可以按向上箭頭鍵,找到你用來運行腳本的命令,不需要將命令重新輸入一遍):
# 兩個數值相加 x = 4 y = 5 z = x + y print("Output #2: Four plus five equals {0:d}.".format(z)) # 兩個列表相加 a = [1, 2, 3, 4] b = ["first", "second", "third", "fourth"] c = a + b print("Output #3: {0}, {1}, {2}".format(a, b, c))
以#開頭的行是注釋,用來解釋代碼,描述代碼的用途和目的。
第一個示例展示了將數值賦給變量、變量相加和格式化print語句的方法。這里詳細說明一下print語句中的語法"{0:d}".format(z)?;ɡㄌ枺▄})是一個占位符,表示這里將要傳入print語句一個具體的值,這里就是變量z的值。0指向format()方法中的第一個參數,在這里,只包含一個參數z,所以0就指向這個值;相反,如果有多個參數,0就確定地表示傳入第一個參數。
冒號(:)用來分隔傳入的值和它的格式。d表示這個值應該被格式化為整數,沒有小數部分。在下一節中,你將會學習如何設定小數位數來顯示浮點數。
第二個示例展示了創建列表、列表相加和將列表中的值以逗號分隔打印在屏幕上的方法??匆幌聀rint語句中的語法"{0},{1},{2}".format(a, b, c),它說明了如何在print語句中包含多個值。a被傳給{0},b被傳給{1},c被傳給{2}。因為這3個值都是列表,不是數值,所以不設置數值格式。本章后面的小節會對這部分內容進行更深入的討論。
為什么要在打印時使用.format
Python并不要求每條print語句都必須使.format,但是.format確實功能強大,可以為你節省很多輸入。在上面的示例中,注意print("Output #3:{0},{1},{2}".format(a, b, c))的最終結果是用逗號分隔的3個變量。如果你想在不使用.format的情況下得到同樣的結果,那么就應該這樣寫:print("Output #3: ",a,", ",b,", ",c),但這是一段非常容易出現輸入錯誤的代碼。后面還會介紹.format的其他用法,但是從現在開始,你就應該熟練掌握它的用法,以便在需要的時候加以使用。
圖1-7和圖1-8展示了在Anaconda Spyder和Notepad++中添加新代碼的界面。

圖1-7:在Anaconda Spyder中為first_script.py添加新代碼

圖1-8:在Notepad++(Windows)中為first_script.py添加新代碼
如果你將前面的代碼添加到了first_script.py中,那么當你保存并且重新運行腳本之后,會看到屏幕中有如下輸出(參見圖1-9):
Output #1: I'm excited to learn Python. Output #2: Four plus five equals 9. Output #3: [1, 2, 3, 4], ['first', 'second', 'third', 'fourth'], [1, 2, 3, 4, 'first', 'second', 'third', 'fourth']

圖1-9:在命令行窗口中運行添加了代碼之后的first_script.py
- C++案例趣學
- PyTorch自動駕駛視覺感知算法實戰
- Vue.js 3.0源碼解析(微課視頻版)
- Practical Windows Forensics
- Magento 1.8 Development Cookbook
- Reactive Programming With Java 9
- SQL經典實例(第2版)
- Apache Kafka Quick Start Guide
- Java程序設計入門
- Visual FoxPro程序設計習題集及實驗指導(第四版)
- R語言與網絡輿情處理
- jQuery for Designers Beginner's Guide Second Edition
- 零基礎學C語言(第4版)
- Python 3快速入門與實戰
- Python深度學習與項目實戰