Python入門(五):常用標準庫sys和os
- 2019 年 12 月 26 日
- 筆記
我們可以編寫自己的模塊,也可以使用大量的Python標準庫模塊和開源模塊,站在巨人的肩上行動,正因為如此,使得當今python如此熱門,今天就讓我們來一起領略python開源庫的魅力。
- Python標準庫常見模塊
python解釋器相關:sys
操作系統:os
json加載生成:json
正則表達式:re
隨機數:random
多線程:multiprocessing
- Python第三方開源庫常見模塊(需安裝)
網頁爬取:scrapy、requests、BeautifulSoup
WEB服務:django、flask
數據庫:PyMySQL、redis
Excel讀寫:xlrd、xlwt
大數據:PySpark
數據計算:numpy、scipy
圖表展示:matplotlib
機器學習:scikit-learn
深度學習:百度PaddlePaddle、谷歌TensorFlow
- Python模塊安裝方法
pip安裝
就是在cmd命令行使用pip命令安裝

pycharm安裝
File-setting–project interpreter–點擊+號–搜索框輸入模塊名稱並搜索–資源池中選中下載資源–點擊install Package–OK



使用Anaconda版本Python(我用的就是)
該包已經預先包括了數據科學的幾乎所有開源包,普通人搞數據分析完全可以了。
- Python標準庫sys和os介紹
sys模塊
負責程序與python解釋器的交互,提供函數和變量用於操控python的運行時環境
sys.argv 類型為list,命令行參數列表,第一個元素是腳本名稱或路徑
sys.path 類型為list,模塊的搜索路徑
它使用PYTHONPATH環境變量初始化
第一個元素是當前目錄,意思是每次會首先搜索當前目錄下的模塊
用戶在程序中可以自己修改sys.path,設置自己的模塊搜索路徑
sys.exit(n) 退出程序,n等於0代表正常退出,不等於0代表異常退出,在shell可以用$?獲得退出值。
import sys # 打印當前文件路徑for row in sys.argv: print(row)print(sys.argv) print("#"*50) # 打印分隔符 # 打印模塊搜索路徑,第一個元素是當前目錄for row in sys.path: print(row) print("#"*50) //打印分隔符sys.exit(0)
運行結果:D:Anaconda3python.exe D:/python/易靈--零基礎Python課程資料/課程相關代碼/test/ossys_test2/sys_test2.pyD:/python/易靈--零基礎Python課程資料/課程相關代碼/test/ossys_test2/sys_test2.py['D:/python/易靈--零基礎Python課程資料/課程相關代碼/test/ossys_test2/sys_test2.py']##################################################D:python易靈--零基礎Python課程資料課程相關代碼testossys_test2D:python易靈--零基礎Python課程資料課程相關代碼testD:Anaconda3python37.zipD:Anaconda3DLLsD:Anaconda3libD:Anaconda3C:UsersAdministratorAppDataRoamingPythonPython37site-packagesD:Anaconda3libsite-packagesD:Anaconda3libsite-packageswin32D:Anaconda3libsite-packageswin32libD:Anaconda3libsite-packagesPythonwin################################################## Process finished with exit code 0
os模塊
負責程序與操作系統交互,提供訪問操作系統底層的接口
os.environ 字典類型,讀取系統環境變量
os.remove(path) 刪除文件
os.rename(src,dst) 重命名文件或目錄,可實現文件移動
os.mkdir(dir) 創建目錄
os.rmdir(dir) 刪除目錄,目錄必須為空
os.listdir(path) 返回列表,列出目錄下的文件和目錄
os.path.basename(path) 提取路徑參數中的文件名
os.path.dirname(path) 提取路徑參數中的目錄名
os.path.split(path) 拆分path為(目錄名, 文件名)
os.path.splitext(path) 拆分path(文件名, 後綴名)
os.path.exists(path) 判斷指定的文件或目錄是否存在
os.path.isdir(path) 判斷path參數是否是目錄
os.path.isfile(path) 判斷path參數是否是普通文件
In [7]: pwdOut[7]: 'C:\Users\Administrator' In [8]: import osIn [10]: os.remove("ttt.txt")In [11]: os.rename("aaa.txt","bbb.txt")In [14]: os.mkdir("new")In [15]: os.rmdir("new")In [19]: os.listdir("C:/Users/Administrator/abc")Out[19]: ['1.txt'] In [20]: os.path.basename("C:/Users/Administrator/abc")Out[20]: 'abc' In [21]: os.path.dirname("C:/Users/Administrator/abc")Out[21]: 'C:/Users/Administrator' In [22]: os.path.split("C:/Users/Administrator/abc")Out[22]: ('C:/Users/Administrator', 'abc') In [26]: pwdOut[26]: 'C:\Users\Administrator' In [27]: os.path.splitext("result.txt")Out[27]: ('result', '.txt') In [28]: os.path.exists("new")Out[28]: False In [29]: os.path.exists("data")Out[29]: True In [31]: os.path.isdir("bbb")Out[31]: False In [32]: os.path.isfile("bbb")Out[32]: False In [33]: os.path.isfile("bbb.txt")Out[33]: True
實例操練:
提供目錄名,實現目錄下文件按後綴名整理。

"""按後綴名清理文件夾程序"""import sysimport os def cleanup(dirpath): """ 對目錄按照後綴名進行清理 步驟1:用字典按後綴名收集對應的文件 步驟2:如果後綴名的目錄不存在,則創建 步驟3:移動文件到目標目錄 :param dirpath: :return: """ # key:value = ext:list(fname) ext_fnames = {} for fname in os.listdir(dirpath): fdir, fileext = os.path.splitext(fname) # 取出.jpg前面的. fileext = fileext[1:] if fileext not in ext_fnames: ext_fnames[fileext] = [] ext_fnames[fileext].append(fname) for ext,fnames in ext_fnames.items(): ext_dir = "%s/%s"%(dirpath, ext) if not os.path.isdir(ext_dir): os.mkdir(ext_dir) for fname in fnames: old_fpath = "%s/%s"%(dirpath, fname) new_fpath = "%s/%s"%(ext_dir, fname) os.rename(old_fpath, new_fpath) if __name__ == "__main__": # 使得能夠import if len(sys.argv) != 2: raise Exception("please give the cleanup dir path") dirpath = sys.argv[1] if not os.path.isdir(dirpath): raise Exception("%s is not a dir"%dirpath) cleanup(dirpath) print("success")
