1. 程式人生 > >python常用的標準庫模組

python常用的標準庫模組

https://www.cnblogs.com/yuanchenqi/articles/5732581.html

源部落格–Yuan先生

環境變數

# 臨時新增環境變數
import sys
sys.path.append()

#如果需要永久修改
#去修改系統的環境變數


# __name__ 呼叫 __main__,如果是被呼叫則顯示檔名
# __file__  檔名  pycharm 會變成絕對路徑

# pycharm ,但是終端會報錯
os.path.dirname(__file__) # 返回此檔案所在目錄,不包含檔名,所在目錄
os.path.dirname(os.
path.dirname(__file__)) # 所在目錄的上層目錄 # 終端 os.path.dirname(os.path.abspath(__file__)) # 返回此檔案所在目錄,不包含檔名,所在目錄 os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 所在目錄的上層目錄

os模組

os.getcwd() #獲取當前工作目錄,即當前python指令碼工作的目錄路徑
os.chdir("dirname")  #改變當前指令碼工作目錄;相當於shell下cd
os.curdir # 返回當前目錄: ('.')
os.pardir # 獲取當前目錄的父目錄字串名:('..') os.makedirs('dirname1/dirname2') # 可生成多層遞迴目錄 os.removedirs('dirname1') # 若目錄為空,則刪除,並遞迴到上一級目錄,如若也為空,則刪除,依此類推 os.mkdir('dirname') # 生成單級目錄;相當於shell中mkdir dirname os.rmdir('dirname') # 刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當於shell中rmdir dirname os.listdir('dirname') # 列出指定目錄下的所有檔案和子目錄,包括隱藏檔案,並以列表方式列印
os.remove() # 刪除一個檔案 os.rename("oldname","newname") # 重新命名檔案/目錄 os.stat('path/filename') # 獲取檔案/目錄資訊 os.sep # 輸出作業系統特定的路徑分隔符,win下為"\\",Linux下為"/" os.linesep # 輸出當前平臺使用的行終止符,win下為"\t\n",Linux下為"\n" os.pathsep # 輸出用於分割檔案路徑的字串 win下為;,Linux下為: os.name # 輸出字串指示當前使用平臺。win->'nt'; Linux->'posix' os.system("bash command") # 執行shell命令,直接顯示 os.environ # 獲取系統環境變數 os.path.abspath(path) # 返回path規範化的絕對路徑 os.path.split(path) # 將path分割成目錄和檔名二元組返回 os.path.dirname(path) # 返回path的目錄。其實就是os.path.split(path)的第一個元素 os.path.basename(path) # 返回path最後的檔名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素 os.path.exists(path) # 如果path存在,返回True;如果path不存在,返回False os.path.isabs(path) # 如果path是絕對路徑,返回True os.path.isfile(path) # 如果path是一個存在的檔案,返回True。否則返回False os.path.isdir(path) # 如果path是一個存在的目錄,則返回True。否則返回False os.path.join(path1[, path2[, ...]]) # 將多個路徑組合後返回,第一個絕對路徑之前的引數將被忽略 os.path.getatime(path) # 返回path所指向的檔案或者目錄的最後存取時間 os.path.getmtime(path) # 返回path所指向的檔案或者目錄的最後修改時間

sys模組

"""
sys.argv           命令列引數List,第一個元素是程式本身路徑
sys.exit(n)        退出程式,正常退出時exit(0)
sys.version        獲取Python解釋程式的版本資訊
sys.maxint         最大的Int值
sys.path           返回模組的搜尋路徑,初始化時使用PYTHONPATH環境變數的值
sys.platform       返回作業系統平臺名稱

"""

# 進度條
import sys,time
for i in range(10):
    sys.stdout.write('#') # 會有快取
    time.sleep(1)
    sys.stdout.flush() #重新整理快取,會把快取
# 終端列印##########,一秒一個。

json

import json
 
dic={'name':'alvin','age':23,'sex':'male'}
print(type(dic))#<class 'dict'>
 
j=json.dumps(dic)
print(type(j))#<class 'str'>
 
 
f=open('序列化物件','w')
f.write(j)  #-------------------等價於json.dump(dic,f)
f.close()
#-----------------------------反序列化<br>
import json
f=open('序列化物件')
data=json.loads(f.read())#  等價於data=json.load(f)


# ---------------------------------------------------------------------
import json
#dct="{'1':111}"#json 不認單引號
#dct=str({"1":111})#報錯,因為生成的資料還是單引號:{'one': 1}
#json 字串必須雙引號

dct='{"1":"111"}'
print(json.loads(dct))

#conclusion:
#無論資料是怎樣建立的,只要滿足json格式,就可以json.loads出來,不一定非要dumps的資料才能loads


# dump dumps load loads
# dump(dic,f檔案物件) 直接寫入
# dump load 對於檔案處理的簡化操作

pickle

import pickle
 
dic={'name':'alvin','age':23,'sex':'male'}
 
print(type(dic))#<class 'dict'>
 
j=pickle.dumps(dic)
print(type(j))#<class 'bytes'>
 
 
f=open('序列化物件_pickle','wb')#注意是w是寫入str,wb是寫入bytes,j是'bytes'
f.write(j)  #-------------------等價於pickle.dump(dic,f)
 
f.close()
#-------------------------反序列化
import pickle
f=open('序列化物件_pickle','rb')
 
data=pickle.loads(f.read())#  等價於data=pickle.load(f)
 
 
print(data['age']) 

shelve

#shelve模組比pickle模組簡單,只有一個open函式,返回類似字典的物件,可讀可寫;key必須為字串,而值可以是python所支援的資料型別

import shelve
 
f = shelve.open(r'shelve.txt')
 
# f['stu1_info']={'name':'alex','age':'18'}
# f['stu2_info']={'name':'alvin','age':'20'}
# f['school_info']={'website':'oldboyedu.com','city':'beijing'}
#
#
# f.close()
 
print(f.get('stu_info')['age'])