下面是有關在 Windows 上設置開發人員環境和開始將 Python 用於腳本和自動執行文件系統操作的分步指南。
備注
本文介紹如何通過以 Windows 為中心的方法設置環境以使用 Python 中的一些有用庫,這些庫可以跨平台自動執行任務(如搜索文件系統、訪問 Internet、分析文件類型等)。 對於特定於 Windows 的操作,請查看 ctypes(適用於 Python 的兼容 C 的外部函數庫)、winreg(向 Python 公開 Windows 注冊表 API 的函數)和 Python/WinRT(可用於從 Python 訪問 Windows 運行時 API)。
使用 Python 編寫執行文件系統操作的腳本時,建議從 Microsoft Store 安裝 Python。 通過 Microsoft Store 安裝會使用基本 Python3 解釋器,但會為當前用戶設置 PATH 設置(避免需要管理員訪問權限),以及提供自動更新。
如果在 Windows 上將 Python 用於 Web 開發,建議使用適用於 Linux 的 Windows 子系統進行不同設置。 在我們的指南中可找到演練:開始在 Windows 上將 Python 用於 Web 開發。 如果不熟悉 Python,請嘗試我們的指南:開始在 Windows 上使用 Python(初學者)。 對於某些高級方案(如需要訪問/修改 Python 的已安裝文件、創建二進制文件的副本或直接使用 Python DLL),可能需要考慮直接從 python.org 下載特定 Python 版本或考慮安裝替代實現,如 Anaconda、Jython、PyPy、WinPython、IronPython 等。建議僅當你是更高級的 Python 程序員並且有特定原因需要選擇替代實現時才使用此方法。
使用 Microsoft Store 安裝 Python:
轉到“開始” 菜單(左下方 Windows 圖標),輸入“Microsoft Store”,選擇用於打開應用商店的鏈接。
應用商店打開後,從右上方菜單中選擇“搜索”,然後輸入“Python”。 在“應用”下,從結果中選擇要使用的 Python 版本。 我們建議使用最新的版本,除非有理由不這樣做(例如與計劃處理的預先存在項目上使用的版本保持一致)。 確定要安裝的版本後,請選擇“獲取”。
Python 完成下載和安裝過程後,使用“開始”菜單(左下方 Windows 圖標)打開 Windows PowerShell。 PowerShell 打開後,輸入 Python --version
以確認已在計算機上安裝了 Python3。
Python 的 Microsoft Store 安裝包括 pip (標准包管理器)。 通過 pip 可以安裝和管理不屬於 Python 標准庫的其他包。 若要確認還可使用 pip 安裝和管理包,請輸入 pip --version
。
通過使用 VS Code 作為文本編輯器/集成開發環境 (IDE),可以利用 IntelliSense(代碼完成輔助)、Linting(可幫助避免在代碼中發生錯誤)、調試支持(可幫助在運行代碼之後查找代碼中的錯誤)、代碼片段(小型可重用代碼塊的模板)以及單元測試(使用不同類型的輸入測試代碼的接口)。
下載適用於 Windows 的 VS Code,並按照安裝說明進行操作:https://code.visualstudio.com。
需要安裝 Microsoft Python 擴展,才能利用 VS Code 支持功能。 了解詳細信息。
通過輸入 Ctrl+Shift+X 來打開 VS Code 擴展窗口(或使用菜單導航到“視圖” >“擴展” )。
在頂部的“在市場中搜索擴展”框中,輸入:“Python”。
找到“Python (ms-python.python) by Microsoft” 擴展,然後選擇綠色的“安裝” 按鈕。
VS Code 包含一個內置終端,使你可以使用 PowerShell 打開 Python 命令行,從而在代碼編輯器與命令行之間建立無縫工作流。
在 VS Code 中打開終端,選擇“視圖” >“終端” ,或者使用快捷方式 Ctrl+' (使用反撇號字符)。
備注
默認終端應為 PowerShell,但如果需要更改它,請使用 Ctrl+Shift+P 進入命令面板。 輸入“終端: 選擇默認 Shell”,會顯示終端選項列表,其中包含 PowerShell、命令提示符、WSL 等。選擇要使用的終端,然後輸入 Ctrl+Shift+' (使用反撇號)以創建新終端。
在 VS Code 終端中,通過輸入以下內容來打開 Python:python
通過輸入以下內容來嘗試使用 Python 解釋器:print("Hello World")
。 Python 會返回語句“Hello World”。
若要退出 Python,可以輸入 exit()
、quit()
或選擇 Ctrl-Z。
如果計劃與其他人協作處理 Python 代碼,或是在開放源代碼站點(例如 GitHub)上托管項目,則 VS Code 支持使用 Git 進行版本控制。 VS Code 中的“源代碼管理”選項卡可跟蹤所有更改,並直接在 UI 中內置了常見 Git 命令(add、commit、push、pull)。 需要先安裝 Git,以便為“源代碼管理”面板提供支持。
從 git-scm 網站下載並安裝適用於 Windows 的 Git。
其中包含了一個安裝向導,該向導會詢問一系列有關 Git 安裝設置的問題。 建議使用所有默認設置,除非有特定原因需要更改某些設置。
如果以前從未使用過 Git,則 GitHub 指南可以幫助入門。
常見系統管理任務可能需要花費大量時間,但是借助 Python 腳本,可以自動執行這些任務,從而完全不會占用任何時間。 例如,Python 可以讀取計算機文件系統的內容並執行各種操作(如打印文件和目錄的大綱、將文件夾從一個目錄移動到另一個目錄或是重命名上百個文件)。 通常,如果手動執行這類任務,則它們可能會占用大量時間。 請改用 Python 腳本!
我們從一個簡單腳本開始,該腳本會遍歷目錄樹並顯示目錄結構。
使用“開始” "菜單(左下方 Windows 圖標)打開 PowerShell。
為項目創建目錄:mkdir python-scripts
,然後打開該目錄:cd python-scripts
。
創建一些目錄以用於我們的示例腳本:
PowerShell復制
mkdir food, food\fruits, food\fruits\apples, food\fruits\oranges, food\vegetables
在這些目錄中創建一些文件以用於我們的腳本:
PowerShell復制
new-item food\fruits\banana.txt, food\fruits\strawberry.txt, food\fruits\blueberry.txt, food\fruits\apples\honeycrisp.txt, food\fruits\oranges\mandarin.txt, food\vegetables\carrot.txt
在 python-scripts 目錄中創建新 python 文件:
PowerShell復制
mkdir src
new-item src\list-directory-contents.py
通過輸入以下內容在 VS Code 中打開項目:code .
通過輸入 Ctrl+Shift+E 打開 VS Code 文件資源管理器窗口(或使用菜單導航到“視圖” >“資源管理器” ),然後選擇剛剛創建的 list-directory-contents.py 文件。 Microsoft Python 擴展會自動加載 Python 解釋器。 可以在 VS Code 窗口底部查看已加載的解釋器。
備注
Python 是一種解釋型語言,這意味著它會充當虛擬機,從而模擬物理計算機。 可以使用不同類型的 Python 解釋器:Python 2、Python 3、Anaconda、PyPy 等。若要運行 Python 代碼並獲取 Python IntelliSense,必須向 VS Code 告知要使用的解釋器。 建議堅持使用 VS Code 默認選擇的解釋器(在我們的示例中為 Python 3),除非有特定原因需要選擇其他解釋器。 若要更改 Python 解釋器,請選擇當前顯示在 VS Code 窗口底部藍色欄中的解釋器,或打開“命令面板” (Ctrl+Shift+P),然後輸入命令“Python: 選擇解釋器”。 這會顯示當前已安裝的 Python 解釋器列表。 詳細了解如何配置 Python 環境。
將以下代碼粘貼到 list-directory-contents.py 文件中,然後選擇“保存” :
Python復制
import os
root = os.path.join('..', 'food')
for directory, subdir_list, file_list in os.walk(root):
print('Directory:', directory)
for name in subdir_list:
print('Subdirectory:', name)
for name in file_list:
print('File:', name)
print()
打開 VS Code 集成終端(Ctrl+' ,使用反撇號字符),然後進入剛剛在其中保存 Python 腳本的 src 目錄:
PowerShell復制
cd src
使用以下命令在 PowerShell 中運行腳本:
PowerShell復制
python3 .\list-directory-contents.py
你應會看到如下所示的輸出:
PowerShell復制
Directory: ..\food
Subdirectory: fruits
Subdirectory: vegetables
Directory: ..\food\fruits
Subdirectory: apples
Subdirectory: oranges
File: banana.txt
File: blueberry.txt
File: strawberry.txt
Directory: ..\food\fruits\apples
File: honeycrisp.txt
Directory: ..\food\fruits\oranges
File: mandarin.txt
Directory: ..\food\vegetables
File: carrot.txt
通過直接在 PowerShell 終端中輸入以下命令,使用 Python 將文件系統目錄輸出打印到自己的文本文件中:python3 list-directory-contents.py > food-directory.txt
恭喜! 你剛剛編寫了一個自動系統管理腳本,該腳本會讀取你創建的目錄和文件,並使用 Python 顯示目錄結構並打印到自己的文本文件中。
備注
如果無法從 Microsoft Store 安裝 Python 3,請查看此問題,通過示例了解如何處理此示例腳本的路徑。
此示例使用剛剛創建的文件和目錄,通過將文件的上次修改日期添加到文件名開頭來重命名每個文件。
在 python-scripts 目錄內的 src 文件夾中,為腳本創建新 Python 文件:
PowerShell復制
new-item update-filenames.py
打開 update-filenames.py 文件,將以下代碼粘貼到該文件中,並保存它:
備注
os.getmtime 會返回以時鐘周期表示的時間戳(這不容易理解)。 它必須先轉換為標准日期時間字符串。
Python復制
import datetime
import os
root = os.path.join('..', 'food')
for directory, subdir_list, file_list in os.walk(root):
for name in file_list:
source_name = os.path.join(directory, name)
timestamp = os.path.getmtime(source_name)
modified_date = str(datetime.datetime.fromtimestamp(timestamp)).replace(':', '.')
target_name = os.path.join(directory, f'{modified_date}_{name}')
print(f'Renaming: {source_name} to: {target_name}')
os.rename(source_name, target_name)
測試 update-filenames.py 腳本,具體方式是運行它:python3 update-filenames.py
,然後再次運行 list-directory-contents.py 腳本:python3 list-directory-contents.py
你應該會看到如下所示的輸出:
PowerShell復制
Renaming: ..\food\fruits\banana.txt to: ..\food\fruits\2019-07-18 12.24.46.385185_banana.txt
Renaming: ..\food\fruits\blueberry.txt to: ..\food\fruits\2019-07-18 12.24.46.391170_blueberry.txt
Renaming: ..\food\fruits\strawberry.txt to: ..\food\fruits\2019-07-18 12.24.46.389174_strawberry.txt
Renaming: ..\food\fruits\apples\honeycrisp.txt to: ..\food\fruits\apples\2019-07-18 12.24.46.395160_honeycrisp.txt
Renaming: ..\food\fruits\oranges\mandarin.txt to: ..\food\fruits\oranges\2019-07-18 12.24.46.398151_mandarin.txt
Renaming: ..\food\vegetables\carrot.txt to: ..\food\vegetables\2019-07-18 12.24.46.402496_carrot.txt
PS C:\src\python-scripting\src> python3 .\list-directory-contents.py
..\food\
Directory: ..\food
Subdirectory: fruits
Subdirectory: vegetables
Directory: ..\food\fruits
Subdirectory: apples
Subdirectory: oranges
File: 2019-07-18 12.24.46.385185_banana.txt
File: 2019-07-18 12.24.46.389174_strawberry.txt
File: 2019-07-18 12.24.46.391170_blueberry.txt
Directory: ..\food\fruits\apples
File: 2019-07-18 12.24.46.395160_honeycrisp.txt
Directory: ..\food\fruits\oranges
File: 2019-07-18 12.24.46.398151_mandarin.txt
Directory: ..\food\vegetables
File: 2019-07-18 12.24.46.402496_carrot.txt
通過直接在 PowerShell 終端中輸入以下命令,使用 Python 將前面追加了最近修改時間戳的新文件系統目錄名稱打印到自己的文本文件中:python3 list-directory-contents.py > food-directory-last-modified.txt
希望你了解了一些有關使用 Python 腳本自動執行基本系統管理任務的有趣內容。 當然,還有很多內容需要知道,但我們希望可以使你有一個良好的開端。 我們在下面共享了幾個其他資源,可用於繼續學習。
os
和 shutil
操作文件和文件夾的中級文章。