python入門教程(一)
- 2020 年 1 月 14 日
- 筆記
我們依然不講程式碼,而是先說命令行。
為什麼命令行如此重要?之前說到,命令行是你和電腦對話的地方。你可以用句子的方式把資訊發給電腦,電腦再以句子的方式給你回應。在編程領域,有些消息只能用命令行告訴電腦——或許是編程人員早就習慣了,或許打字更有效——畢竟你和閉著眼睛的人交流,肯定比捂著耳朵的人交流方便(你不能用滑鼠寫字!)。在編程中,大部分消息都是靠說,而不是靠比劃(畫圖就是比劃的例子)。呃……總之你得懂命令行。
在Windows里有命令行,Linux也有,但是大同小異。要弄懂命令行怎麼幹活,只要想像電腦沒有螢幕,但是會說話。比如——
——「桌面上有什麼?」 ——「有3個文件夾:回收站,資料,工具;5個文件:便簽.txt,語言哲學.pdf,截圖.png,antistops.py,安裝程式.exe」 ——「E盤裡有什麼?」 ——「有1個文件夾:work」 ——「work文件夾里有什麼?」 ——「您的電腦里有不止一個名為work的文件夾。」
頓時尷尬,畢竟眼前就有個work文件夾,卻進不去。所以設計命令行的人想出了「當前位置」這個概念。我們知道文件夾的組織可以看成「樹」——(其實#不能用於文件名,我用的cs而不是c#)

實際肯定比這複雜。當前位置的意思就是,你只能站在這棵樹的一個文件夾節點上,即你不能同時位於多個文件夾。你只能看到周圍的點。以上圖為例,你想讓電腦運行hello.exe,圖上卻有兩個hello.exe。加上「當前位置」這個概念後,你只能打開當前文件夾中的文件。而同一個文件夾中,文件名不能重複,就保證了你能唯一地指定一個文件。想運行文件夾(很多人管文件夾叫目錄,因為不拗口)C下的hello.exe,就要走到目錄C 。
但是人是會走丟的。設計者是這麼處理的:
1.x盤是固定的,不必多說。 2.E盤下的目錄C記作「E:C」,再下層的hello.c記作E:Chello.c
層層嵌套。所以如果你在運行欄(或者點開始菜單里的「運行」)輸入cmd回車,我猜你明白C:UsersAdministrator>是什麼意思了,表示你處在一個名叫Administrator的文件夾里。


其實,沒有「當前位置」,也是可以定位每一個文件的。上例中,不管你在哪裡,輸入E:Chello.exe,電腦都知道你要找的不是E:C#hello.exe 。但是每次樹一長串,誰願意呢?另外,命令行里顯示的那個目錄叫「當前工作目錄」,簡稱工作目錄,我相信你幾次用命令行運行python就會明白為什麼叫「工作」了。
所以你可以對命令行說這些東西:
- 進入某個子目錄(即當前文件夾中的文件夾)—— cd xxx
- 進入上一層目錄(可以稱為父目錄) —— cd .. (就是兩個點)
- 進入E:C —— cd E:C
- 進入自身(「並非毫無用處」) —— cd . (一個點)
cd 是change directory 的首字母
(你可能發現某些命令並不起作用,因為上圖的home是假的。上面的命令只有當在同一個盤中才有用,不能用cd 換盤。想切換盤符,直接輸入「盤符名:」回車,比如e: 回車 )
上一篇文章還說到,「python xxx.py」是一條命令。其實命令分為兩部分,第一個詞是一部分,剩下的是第二部分。python是python.exe,在命令行.exe可省略(不省也可以用,但習慣上省略)。python xxx.py就是啟動python.exe,並且告訴程式一個額外資訊: xxx.py。這可能令人困惑,運行程式是允許加點別的東西的(加一個算少的了)。cd xxxxx,就是運行cd.exe 附加【參數】xxxxx——雖然未必有cd.exe,但完全可以當做有。所有的命令,幾乎都只有第一個詞真的做了事。(exe文件也是文件)
最後還要說絕對路徑和相對路徑,用處在於,你如何稱呼一個可能重名的文件?仍然用剛才的例子,你位於目錄C,想運行隔壁目錄C#的hello.exe 。目前有三種辦法:
1. cd .. 再 cd C# 再 hello (.exe可以省略) 2. E:C#hello 3. ..C#hello.exe
2和3都做到了不切換工作目錄而處理了別的目錄的exe文件。2叫做絕對定位,因為從盤開始;3叫相對定位,因為從自身開始。電腦只認盤符,要是沒有,就假設是從工作目錄開始。雖然這樣看,好像上層目錄被當成名為..的子文件夾了,但是無妨——這其實挺奇妙。(你仔細看看樹圖,會發現節點都可以看成根節點,有點參考系的味道)
兩種定位都是可以的。其實還有一種定位——你有沒有想過,python.exe在哪?!還記得安裝第一步點的PATH么,名為「環境變數」之物,環境變數里寫著的若干目錄可以無條件引用(當前目錄也是無條件引用的)。電腦收到你的命令python,首先在工作目錄里找python.exe,找不到就到環境變數里的目錄里找,再找不到就報錯。
然後你就能讀懂這些了:(除了.和..用法特別,還有 表示當前盤起始,可以用cd 、cd C 等等 )
* cd xxx (兩種定位皆可) * cd ——回到本盤起始位置 * dir —— 查看當前目錄資訊(directory 縮寫) * dir xxx —— 查看xxx目錄(兩種定位皆可) * md xxx —— 建立新文件夾(兩種定位皆可) (make dir縮寫) * rd xxx ——刪除【空】文件夾(兩種定位皆可)(remove dir 縮寫)【請注意!命令行刪除不進回收站,是永久刪除!】 * cls ——清屏(clean screen 縮寫) * copy xxx xxx —— 複製文件內容(不包括名稱),後面的名字為新的名字(當然,兩種定位皆可) * del xxx —— 刪除文件,不包括文件夾(可用 del * 刪除所有文件,del * .txt 刪除所有.txt文件,等等)(delete縮寫) * deltree xxx —— <危險操作>刪除文件夾以及一切內容 * ren xxx xxx —— 重命名(rename 縮寫)
命令可以有參數,即在輸完上述命令後,還可以後跟一些東西。之前說到python.exe 可以後跟文件名,但參數只是字元串,不一定是文件名。你輸入的命令如果有多個詞,那麼所有的詞都會告訴第一個詞,因為那是唯一被運行的東西,他會收到所有參數。比如dir命令可以有超過2個參數(除了本身dir 和常規的xxx),比如後跟a或s等等,請自行百度「dos命令」
