表示時間的方式分爲: html
1時間戳(timestamp)node
2格式化化的時間字符串(format string)python
3結構化時間(struct_time)數組
實例:dom
import datetime import time print(datetime.datetime.now()) #2018-06-05 19:01:06.993322 print(datetime.date.fromtimestamp(time.time())) #2018-06-05 print(datetime.datetime.now()+datetime.timedelta(3)) #2018-06-08 19:03:53.716729 print(datetime.datetime.now()+datetime.timedelta(-3)) #2018-06-02 19:04:49.441533 print(datetime.datetime.now()+datetime.timedelta(hours=3)) #2018-06-05 22:05:59.804380 print(datetime.datetime.now()+datetime.timedelta(hours=-3)) #2018-06-05 16:07:10.981068 time=datetime.datetime.now() print(time.replace(day=7,hour=22)) #2018-06-07 22:32:30.268675
import random print(random.random()) #0.7440638054751231 print(random.randint(1,3))#閉區間,必須傳入兩個參數 #2 print(random.randrange(5))#前閉後開區間,至少傳一個整數 #1 print(random.choice(['a','b',1,2,3]))#必須傳一個數組,將在數組裏任意取一個值 print(random.sample([1,2,3],2))#必須傳兩個參數一個是供選擇的數組。一個是整數,表明取幾個數 #['b'] print(random.uniform(3,5))#必須傳兩個數,結果是開區間的一個小數 print(random.shuffle([1,2,2,3,4]))#必須傳入一個參數,並且必須是一個能夠計算長度,能夠取索引的參數
用途:產生消息摘要,用於判斷文件是否相同ide
用法:函數
。md5.new([arg])//返回一個md5對象,若是有參數則至關於調用了update(arg) 。md5.md5(s)//返回字符串s的md5 。md5.update(arg)//用string參數更新md5對象。 。md5.digiest()返回16字節的摘要,由傳給update的string生成,摘要沒有ascii碼字符。 。hexdigest()//返回16字節的摘要,由傳給update的string生成,摘要進制的形式返回摘要,32位。
實例:spa
import hashlib m = hashlib.md5() m.update("Nobody inspects".encode('utf-8')) m.update(" the spammish repetition xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".encode('utf-8')) print(m.digest()) print(m.hexdigest())
返回結果:.net
二進制結果:b" \x90j>N\x82'\xd1\xb2m\x8d\xa0<&\xd06"命令行
十六進制結果:20906a3e4e8227d1b26d8da03c26d036
sys模塊是可供訪問的解釋器使用或維護的變量和與解釋器進行交互的函數。負責程序與解釋器的交互,提供了一系列的函數和變量,用於操控python運行時的環境。
import sys print(sys.argv)#命令行參數list形式返回,第一個雲素是程序自己 print(sys.path)#返回模塊的搜索路徑,初始化時使用python環境變量的值 print(sys.platform)#返回系統平臺名稱 print(sys.version)#獲取解釋程序的版本信息 print(sys.exit(0))#退出程序,正常時退出exit(0)
高級的文件、文件夾、壓縮包處理模塊
import shutil #拷貝文件 shutil.copyfileobj(open(r'02.批量操做','rb'),open('new.html','wb')) #目標文件無需存在 shutil.copyfile(r'01.監聽input輸入','f2.html') #僅僅拷貝文件權限,其餘均不變。目標文件必須在 shutil.copymode(r'02.批量操做','f1.html') #僅僅拷貝文件狀態。文件必須在 shutil.copystat(r'02.批量操做','f1.html') #僅僅拷貝文件和權限 shutil.copy(r'02.批量操做','f1.html') #拷貝文件和狀態信息 shutil.copy2(r'02.批量操做','f1.html') #遞歸拷貝文件夾。目標目錄不能存在,注意必須對目標目錄的父級目錄有可寫權限 shutil.copytree(r'D:\pycharm\pre_farmer\runoob',r'D:\pycharm\pre_farmer\a',ignore=shutil.ignore_patterns('*.py','practice*')) #建立壓縮包並返回文件路徑 shutil.make_archive('02','gztar',root_dir=r'D:\pycharm\pre_farmer\runoob') #遞歸地移動文件,相似mv命令 shutil.move(r'D:\pycharm\pre_farmer\今日做業.html',r'D:\pycharm\pre_farmer\runoob\a.html') #遞歸地刪除文件夾下的文件 shutil.rmtree(r'./a') #建立壓縮包並返回文件路徑 shutil.make_archive('02','gztar',root_dir=r'D:\pycharm\pre_farmer\runoob')
建立壓縮包並返回文件路徑,例如:zip、tar
建立壓縮包並返回文件路徑,例如:zip、tar
base_name: 壓縮包的文件名,也能夠是壓縮包的路徑。只是文件名時,則保存至當前目錄,不然保存至指定路徑,
如 data_bak =>保存至當前路徑
如:/tmp/data_bak =>保存至/tmp/
format: 壓縮包種類,「zip」, 「tar」, 「bztar」,「gztar」
root_dir: 要壓縮的文件夾路徑(默認當前目錄)
owner: 用戶,默認當前用戶
group: 組,默認當前組
logger: 用於記錄日誌,一般是logging.Logger對象
tar壓縮格式
import tarfile #壓縮 t=tarfile.open('今日做業.tar','w') t.add('../今日做業.html',arcname='a.bak') t.close() #解壓縮 t=tarfile.open('今日做業.tar','r') t.extractall('./')#解壓縮到當前目錄 t.close()
zip壓縮格式
import zipfile # 壓縮 z = zipfile.ZipFile('laxi.zip', 'w') z.write('a.log') z.write('data.data') z.close() # 解壓 z = zipfile.ZipFile('laxi.zip', 'r') z.extractall(path='.') z.close()
#解壓文件爲中文的文件名亂碼問題,參考:https://blog.csdn.net/tian544556/article/details/78635840
1 import xml.etree.ElementTree as ET 2 3 4 5 tree=ET.parse('a.xml')#解析文件 6 7 root=tree.getroot()#查樹根 8 9 10 11 print(root.tag)#獲取根節點 12 13 #遍歷xml文檔 14 15 for child in root: 16 17 print('==>',child.tag,child.attrib,child.attrib['name']) 18 19 for i in child: 20 21 print(i.tag,i.attrib,i.text) 22 23 #遍歷gdppc節點 24 25 for node in root.iter('gdppc'):#迭代查找:會在整個樹中查找,而且是查找全部匹配的 26 27 print(node.tag,node.text) 28 29 30 31 #修改節點 32 33 for node in root.iter('year'): 34 35 new_year=int(node.text)+3 36 37 node.set('updated','yes') 38 39 node.set('version','1.0') 40 41 tree.write('a.xml') 42 43 44 45 #刪除節點 46 47 for country in root.findall('country'): 48 49 rank=int(country.find('rank').text) 50 51 if rank>50: 52 53 root.remove(country) 54 55 tree.write('a.xml') 56 57 58 59 #建立xml文檔 60 61 new_xml=ET.Element('namelist') 62 63 name=ET.SubElement(new_xml,'name',attrib={'enrolled':'yes'}) 64 65 age=ET.SubElement(name,'age',attrib={'checked':'no'}) 66 67 gender=ET.SubElement(name,'gender') 68 69 gender.text='33' 70 71 name2=ET.SubElement(new_xml,'name',attrib={'enrolled':'no'}) 72 73 age=ET.SubElement(name2,'age') 74 75 age.text='19' 76 77 et=ET.ElementTree(new_xml) 78 79 et.write('a.xml',encoding='utf-8',xml_declaration=True) 80 81 ET.dump(new_xml)