1. 程式人生 > >python實用小工具介紹

python實用小工具介紹

developer 交互式 tp服務器 引擎 pam 人類 edi 答案 import語句

一、秒級啟動一個HTTP下載服務器
在實際工作中,時不時會有這樣的一個需求:將文件傳給其他同事。將文件傳給同事本身並不是一個很繁瑣的工作,現在的聊天工具一般都支持文件傳輸。但是,如果需要傳送的文件較多,那麽,操作起來就會比較麻煩。此外,如果文件在遠程的服務器上,你要將文件傳給同事,則需要先將遠程服務器的文件下載到本地,然後再通過聊天工具傳給同事。再或者,你並不是特別清楚要傳哪幾個文件給同事,所以,你們需要進行來回的交流。交流的時間成本是比較高的,會降低辦事效率。此時,你們需要更加高效的方法。這個時候,如果你知道Python內置了一個下載服務器就能夠顯著提升效率了。例如,你的同事要讓你傳的文件位於某一個目錄下,那麽,你可以進入這個目錄,然後執行下面的命令啟動一個下載服務器:
本地有個一文件夾,想共享給局域網同事下載一些裏面的文件,可以使用python的如下命令。
? python2的用法如下:
python -m SimpleHTTPServer
? python3的用法如下:
python3 -m http.server --cgi
以上兩種方法默認端口8000,可以制定端口,例如指定端口45678:
python -m SimpleHTTPServer 45678
python3 -m http.server --cgi 45678
技術分享圖片
如果本機ip地址是10.10.40.112,同網段他人在瀏覽器輸入10.10.40.112:45678訪問共享文件夾內容
技術分享圖片
註:從工作原理角度來說,執行上面的命令,只是啟動了一個Python內置的web服務器。如果當前目錄下存在一個名為index.html的文件,則默認會顯示該文件的內容;如果當前目錄下不存在這樣一個文件,則默認顯示當前目錄下的文件列表,也就是大家看到的下載服務器。
通過Python版FTP服務器方法
看到這裏,默認你已經安裝了Python,此處測試為python2.7版本
Python沒有內置一個直接可以用的FTP服務器,所以需要第三方組件的支持,我找到的這個組件叫pyftpdlib,首先安裝:
pip install pyftpdlib
安裝完後,和HTTP服器類似,執行以下命令就可以啟動一個FTP服務器了:
python -m pyftpdlib -p 21
技術分享圖片
後面的21端口依然是可選的,不填會隨機一個,被占用的端口將跳過。在瀏覽器敲入本機地址:
ftp://主機ip:21
技術分享圖片
二、字符串轉換為JSON
JSON是一種輕量級的數據交換格式,易於人類閱讀和編寫,同時也易於機器解析和生成。由於JSON的諸多優點,已經廣泛使用在各個系統中,因此,我們經常會有將JSON字符串轉換為JSON對象的需求。
例如,在筆者的工作過程中,我們的系統會調用底層服務的API,底層服務的API一般都是以JSON的格式返回,為了便於問題追蹤,我們會將API返回的JSON轉換為字符串記錄到日誌文件中。當需要分析問題時,就有可能需要將日誌文件中的JSON字符串扣出來進行分析,這個時候,需要將一個JSON字符串轉換為JSON對象以便於閱讀。
這個需求是如此的常見,以至於使用搜索引擎搜索"JSON",處於搜索結果的第一項便是"在線JSON格式化工具"。除了打開瀏覽器,使用在線JSON格式化工具以外,我們也可以使用命令行終端的Python解釋器來解析JSON串,如下所示:
$ echo ‘{"job": "developer", "name": "lmx", "sex": "male"}‘ | python -m json.tool {
"job": "developer", "name": "lmx", "sex": "male"
}
使用命令行解釋器解析JSON串非常的方便,而且,為了便於閱讀,該工具還會自動將轉換的結果進行對齊和格式化,如下所示:
$ echo ‘{"address": {"province": "zhejiang", "city": "hangzhou"}, "name": "lmx", "sex": "male"}‘ | python -m json.tool {
"address": {
"city": "hangzhou", "province": "zhejiang"
}, "name": "lmx", "sex": "male"
}
三、檢查第三方庫是否正確安裝
Yum install python-pip –y #安裝python的pip包
Pip install paramiko #通過pip安裝其他python包(此處pip相當於linux中的yum)
安裝完Python的第三方庫以後,如何確認這個庫已經正確安裝了呢?這個問題的答案很簡單,只需要嘗試進行import導入,如果導入沒有任何錯誤,則認為安裝成功了。
lmx@host1:~/temp$ python
Python 2.7.13 (default, Feb 10 2017, 20:22:22)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>> import paramiko
驗證Python的第三方庫是否安裝成功,本身也是一件很簡單的事情,但是,如果我們使用腳本對大批量的服務器進行自動部署,又應該如何驗證第三方庫安裝成功了呢?肯定不能登錄每一臺服務器進行驗證,這個時候,我們可以使用Python解釋器的-c參數快速的執行import語句,如下所示:
python -c "import paramiko"
使用這種驗證方式,不但比交互式的驗證更加高效,更重要的是,能夠在腳本中實現對於遠程服務器的驗證操作。
四、使用Python解壓zip壓縮包
如果讀者是一名具有關工作經驗的工程師,一定遇到過要在Linux下解壓zip格式壓縮包的需求。Linux下一般都是用tar命令創建和讀取壓縮包,但是,tar命令並不支持zip格式的壓縮包。為了讀取zip格式的壓縮包,需要使用unzip,而大部分操作系統都沒有安裝unzip,因此,每次需要在Linux下解壓zip格式的壓縮包都會比較麻煩。
除了安裝unzip工具和編寫Python腳本解壓zip格式的壓縮包以外,也可以使用zipfile模塊提供了命令行接口。讀者以後可以在Linux下,使用Python命令創建和解壓zip格式的壓縮包。zipfile模塊提供的命令行接口包含以下幾個選項:
? -l <zipfile> 顯示zip格式壓縮包中的文件列表
? -c 創建zip格式壓縮包
? -e 提取zip格式壓縮包
? -t 驗證文件是一個有效的zip格式壓縮包
下面的命令使用Python的zipfile模塊提供的命令行接口,創建、查看和提取zip格式壓縮包:
python -m zipfile -c monty.zip spam.txt eggs.txt
python -m zipfile -e monty.zip target-dir/
python -m zipfile -l monty.zip

總結:希望對大家有所幫助、能夠提高大家的工作效率。

python實用小工具介紹