python中常用模組詳解一,python模組詳解
1.time 模組
import times = time.localtime() # 把時間轉化成格式化的時間,通過. 取得裡面的年月日等 struct_time 格式time.struct_time(tm_year=2018, tm_mon=3, tm_mday=11, tm_hour=19, tm_min=53, tm_sec=31, tm_wday=6, tm_yday=70, tm_isdst=0)s=time.gmtime() #UTC 時區s=time.time() # 返回目前時間戳print(time.asctime()) #接收struct_time 轉化成Sun Mar 11 19:46:08 2018 不傳預設當前的時間print(time.ctime(0)) #返回當前的時間Sun Mar 11 19:46:08 2018 預設目前時間傳入時間戳記格式數位話 轉化成時間戳記日期Thu Jan 1 08:00:00 1970print(time.strftime("%Y-%m-%d", time.localtime())) # 傳入的是struct_time 格式的時間格式 轉換成自己定義的時間格式print(time.strptime("2017-12-12", "%Y-%m-%d")) # 把字串格式轉化成struct_time格式
2.datetime模組
import datetimes=datetime.datetime.now() #(2018-03-11 20:19:10.993661)s下面好多方法 year mouth day date()=2018-03-11 ctime()=Sun Mar 11 19:46:08 2018 strftime("%Y-%m-%d")print(datetime.date.fromtimestamp(time.time())) # 把一個時間戳記轉換成2018-03-11# ############# 主要是時間的運算s = datetime.datetime.now() print(s.timetuple()) # time.struct_time(tm_year=2018, tm_mon=3, tm_mday=11, tm_hour=20,# tm_min=19, tm_sec=9, tm_wday=6, tm_yday=70, tm_isdst=-1)print(s + datetime.timedelta(seconds=1)) # 實現運算的作用 後面跟 day hours secondsd = datetime.datetime.now()t = d.replace(year=2016) #修改時間並且返回修改後的時間 ,被修改的時間不變 print(t)
3.random模組的使用
import random print(random.randint(1, 200)) # 隨機 產生1-200之間的數字 包含200 print(random.randrange(1, 200, 2)) # 隨機產生1-200(偶數) 不包含200 print(random.random()) # 0-1 的小數 print(random.choice("dasdadsasdad")) # 隨機挑選一個字串的字元 print(random.sample("adasdasdasdad",5)) #在字串中隨機挑選5個字元組成列表#實現驗證碼import stringprint(string.ascii_letters) #大小寫包含print(string.hexdigits) #十六位進位print(string.digits)#十進位s_list=random.sample(string.ascii_letters + string.digits,4)s=''.join(s_list)print(s)
list_all=[i for i in range(80)] # # a='dasdasdasd' #不能是字串 # random.shuffle(list_all) # 重新洗牌 使在原來的列表中生效 # print(list_all)
os 模組提供了很多允許你的程式與作業系統直接互動的功能
# os 模組提供了很多允許你的程式與作業系統直接互動的功能import osBASE_DIR = os.path.abspath(__file__) # 返迴文件的據對路徑os.listdir(".") # 列出指定檔案夾下的目錄os.path.join('aaa', 'aaa') # 把路徑拼接os.path.dirname(BASE_DIR) # 返回目錄路徑不包含檔案os.path.split(BASE_DIR) # 返迴文件名和路徑組成的列表os.path.exists(BASE_DIR) # 判斷path是否存在os.path.isfile(BASE_DIR) # 判斷檔案是否存在os.path.isdir(BASE_DIR) # 判斷是否是一個目錄os.path.splitext(BASE_DIR)os.path.basename(BASE_DIR) # 擷取檔案名稱os.path.getsize(BASE_DIR) # 擷取檔案大小 ********常用
5.SYS模組的使用
sys.argv 命令列參數List,第一個元素是程式本身路徑sys.exit(n) 退出程式,正常退出時exit(0)sys.version 擷取Python解釋程式的版本資訊sys.maxint 最大的Int值sys.path 返回模組的搜尋路徑,初始化時使用PYTHONPATH環境變數的值sys.platform 返回作業系統平台名稱sys.stdout.write('please:') #標準輸出 , 引出進度條的例子, 注,在py3上不行,可以用print代替val = sys.stdin.readline()[:-1] #標準輸入sys.getrecursionlimit() #擷取最大遞迴層數sys.setrecursionlimit(1200) #設定最大遞迴層數sys.getdefaultencoding() #擷取解譯器預設編碼sys.getfilesystemencoding #擷取記憶體資料存到檔案裡的預設編碼json & pickle 模組 python 的序列化與還原序列化的模組,用於程式之間的互動。
json 的有點就是跨平台 不同語言都支援json 確定就是支援的種類不多str int list tuple dict
json.loads()傳可被json的檔案類型json轉化成字串 json.load() json.dumps() json.dump()
pickle只可以在python裡面使用 支援python的資料類型 ,佔用體積比較大
import jsonimport pickle# json 的有點就是跨平台 不同語言都支援json 確定就是支援的種類不多str int list tuple dict# json.loads()傳可被json的檔案類型json轉化成字串 json.load() json.dumps() json.dump()# pickle只可以在python裡面使用 支援python的資料類型 ,佔用體積比較大d = {1: 2, 3: 4}l = ["name", "age"]s = json.dumps(d) # 把字典等格式轉化成字串print(s)d1 = json.loads(s) # 把字串轉換成字典形式print(d1)f = open("test.json", 'w') # 把字典等形式存在檔案的變成字串轉換成字元json.dump(d, f)f.close()f = open("test.json", 'r') # 從檔案裡讀出來 轉化成字串d2 = json.load(f)# pickle 也是這樣的形式 只是上傳的時候檔案儲存的是以pickle的形式儲存在檔案裡
shutil模組 該模組用於檔案的copy與壓縮 ,主要用於檔案的打包、移動、等功能。
import shutil# 拷貝檔案 前提是檔案必須開啟 傳的是控制代碼shutil.copyfileobj(open("Log.py", "r"), open("Log_new.py", "w"))# 拷貝檔案 封裝了開啟檔案 只需要傳檔案名稱(不是目錄名)shutil.copyfile("Log.py", "log_new.py")shutil.copymode("Log.py", "lll.py") # 僅拷貝許可權,目標檔案必須存在shutil.copy("Log.py", "lll.py") # 拷貝檔案和許可權shutil.copy2("Log.py", "lll.py") # 拷貝檔案和狀態# 拷貝目錄 必須是目錄shutil.copytree("../FTP", "ftp", ignore=shutil.ignore_patterns("__init__.py"))# 遞迴的拷貝檔案,有個參數ignore=shutil.ignore_patterns("__init__.py")忽略的檔案shutil.rmtree("log_new.y") # 刪除目錄 檔案不行的shutil.move("log_new.y", "ll.py") # 移動檔案,或者重新命名shutil.make_archive(base_name="log_l", format="zip", root_dir="../FTP") # 壓縮檔# base_name 指定壓縮的路徑 最後面跟壓縮檔名,format= 壓縮格式"zip", "tar", "bztar","gztar"# root_dir 要壓縮的檔案路徑(目錄) owner 使用者名稱 group 組名
模組xlrd,讀取excel表格的模組xlrd 外部模組 需要pip 安裝 只可以讀取excle
其他Excel寫入修改模組請連結 http://blog.csdn.net/yankaiwei120/article/details/52204427
import xlrd# 解析xls表格檔案的模組 用xlrd 寫入用xlwdBook = xlrd.open_workbook(r"C:\Users\zhuangjie23261\Desktop\風控文檔.xls") # 開啟檔案返回一個book對象sheet = Book.sheets() # 返回指定的sheet的對象形成一個列表num = Book.nsheets # 返迴文件的sheet的 個數Book.sheet_by_index(1) # 返回指定的索引值的sheet 頁的名稱Book.sheet_names() # 返回所有sheet頁的名稱Book.sheet_by_name() # 根據名稱返回sheet頁對象Book.sheet_loaded() # 根據指定的索引或者名稱 來判斷是否有 沒有則報錯sheet.name # 返回sheet的名稱sheet.nrows # 返回sheet頁的行數 -----行sheet.ncols # 返回sheet頁的列數 | 列sheet.row( 1) # 擷取指定的行 組成一個Cell_lisy列表[number:20100805.0, text:'O32_20100430sp2', text:'E類風控資產類別', text:'添加N-網下申購預估中籤資產(公開發行)', empty:'', text:'胡育東']sheet.row_values(1) # 指定行的列表 [20100805.0, 'O32_20100430sp2', 'E類風控資產類別', '添加N-網下申購預估中籤資產(公開發行)', '', '胡育東']sheet.col(1) # 擷取指定的列 的cell_listsheet.col_values(1) # 指定列的listcell = sheet.cell(1, 2) # 根據位置擷取Cell對象。sheet.cell_value(1, 2) # 根據位置擷取Cell對象的值。print(cell.value) # 擷取cell 的值# 列印每張表的第一列for s in sheet: print(s.name) # 擷取每個sheet頁 for i in range(s.nrows): # s.nrows 每個sheet頁 有多少行 s.row(i) 這個是返回每一行的一個列表-1 代表最後一個 value代表文本值 print(s.row(i)[0].value)
解析xml模組
xml是實現不同語言或程式之間進行資料交換的協議,跟json差不多,但json使用起來更簡單,不過,古時候,在json還沒誕生的黑暗年代,大家只能選擇用xml呀,至今很多傳統公司如金融行業的很多系統的介面還主要是xml。
import xml.etree.ElementTree as ETtree = ET.parse("test.xml")root = tree.getroot()print(root.tag) # tag > <data>這種屬性的表頭for child in root: print(child.tag, child.attrib) # attrib <>裡面的屬性 組成一個字典 for i in child: print(i.tag, i.text) # <>text<> 常值內容for year in root.iter("year"): # iter()相當於一個篩選器 篩選 <>裡面的屬性 print(year.text)# *****************************************# 對xml 修改for year in root.iter("year"): new_year = int(year.text) + 1 year.text = str(new_year) # 轉換成字串的格式 寫入 year.set("updated", "yes") # set格式類型 updated yes 說明 更新tree.write("test.xml")#對xml 節點的刪除for country in root.findall("country"): # 節點就是node 遍曆尋找root 下面全部country的節點 rank = country.find("rank").text # 再尋找到的每一個country下的rank 節點列印text rank = int(rank) # 把str轉化成int if rank < 60: country.remove(country.find("rank")) # 這樣是移除country 下的節點rank 也可以直接remove這個country 這個大的節點tree.write("new_test.xml") #把產生的寫入新檔案# ***************************************new_xml = ET.Element("namelist") # 產生一個xml的根節點最外層節點name = ET.SubElement(new_xml, "name", attrib={"data": "2017-11"}) # 產生最外層節點之下的一個節點nameage = ET.SubElement(name, "age") # 在name 這個節點之下再產生兩個節點 age,sexsex = ET.SubElement(name, "sex") # sexage.text = "33"sex.text = "男"# 給 age設定數字必須是字元# 這裡還可以加多個節點name2 = ET.SubElement(new_xml, "name", attrib={"data": "2018-11"}) # 產生最外層節點之下的一個節點nameage = ET.SubElement(name2, "age") # 在name 這個節點之下再產生兩個節點 age,sexsex = ET.SubElement(name2, "sex") # 如果沒有設定text 則會顯示一個標籤 age.text = "33"#*********************************************et = ET.ElementTree(new_xml) # 這一步是把上面的設定好的格式轉化成xml的文檔et.write("new_xml.xml", encoding="utf8", xml_declaration=True) # 寫入 檔案ET.dump(new_xml) # 列印寫入的檔案格式
configparser讀取設定檔與對設定檔修改
import configparser"""[DEFAULT]ServerAliveInterval = 45Compression = yesCompressionLevel = 9ForwardX11 = yes[bitbucket.org]User = hg[topsecret.server.com]Port = 50022ForwardX11 = no***************[group2]k1 = v1[group3]k1 = v1"""# 解析conf = configparser.ConfigParser()conf.read("conf_new.ini") # 開啟設定檔sec_list = conf.sections() # 擷取檔案的sections ["DEFAULT"] 不列印s = conf["bitbucket.org"]["User"] # 列印節點section下的User 的文本for v in conf["topsecret.server.com"]: print(v) # 列印 topsecret.server.com 下的節點名稱 預設也列印default下的節點# 查詢opt = conf.options("bitbucket.org") # 尋找指定節點下的對用的key值print(opt)item = conf.items("bitbucket.org") # 返回 key value 對應的元祖print(item)val = conf.get("bitbucket.org", "compression") # group>[] key>k1:v1val=conf.getint("topsecret.server.com", "Port") # 獲得的值是int值print(val)# 增刪conf.read("conf_new.ini") # 開啟設定檔conf.remove_section("group1") # 刪除節點group1conf.add_section("group3") # 添加節點group3conf.remove_option("group3", "k1") # 刪除 option 先寫組[] 然後填keyprint(conf.has_section("group1")) # 判斷有沒有這個組conf.set("group3", "k1", "v1") # 設定配置conf.write(open("conf_new.ini", 'w')) # 寫入檔案必須是開啟的檔案 說白了就是傳入檔案控制代碼