dict字典和文件操作open
字典dict
使用key來標註value的數據類型,key和value是一一對應的.在字典中key是唯一的,所以字典也是無序的.
#定義一個字典 dict = { ‘name‘ : ‘sylar‘, ‘age‘ : 18, ‘post‘ : ‘OPS‘, ‘salary‘ : 80000 } ###常用操作和方法 #訪問字典的數據,使用定義的key來獲取 print(dict_test[‘name‘]) #修改字典 dict_test[‘name‘] = ‘Sylar‘ print(dict_test[‘name‘]) #copy復制一個字典 #clear刪除所有元素 a = dict_test.copy() print(a) print(a.clear()) #fromkyes創建一個新字典,以序列中元素做字典的鍵,val 為字典所有鍵對應的初始值 a = {} a = a.fromkeys([1,2,3,4,5],‘defalt‘) print(a) #get獲取元素值同dict_test[‘name‘] print(dict_test.get(‘name‘)) #item遍歷所有元素,將元素以鍵值對元組的方式輸出 print(dict_test.items()) #keys遍歷所有元素的value print(dict_test.keys()) #pop刪除一個元素,並返回元素的value值 print(dict_test.pop(‘age‘)) print(dict_test) #popitem刪除一個元素,並以元組的形式返回key,value值 print(dict_test.popitem()) print(dict_test) #setdefault設置一個默認值的元素,如果key已經存在則返回對應的value print(dict_test.setdefault(‘a‘,100)) print(dict_test) #update用一個字典的數據去更新另外一個字典的數據 a = {‘name‘:‘tom‘,‘a‘:‘b‘} dict_test.update(a) print(dict_test) #valus遍歷所有元素的value print(dict_test.values()) 遍歷字典的方法 for i in dict_test: print(i, dict_test[i]) for i in dict_test.items(): print(i) for k,v in dict_test.items(): print(k, v)
文件操作
對文件的打開讀寫是用open函數,打開文件的方式又分為:
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。
r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。
rb+ 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。
w 打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
wb 以二進制格式打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
w+ 打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
wb+ 以二進制格式打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
ab 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
a+ 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
ab+ 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。
簡單來說常用的:r+先讀後寫從頭開始覆蓋寫.w+先寫後讀,默認先創建一個空文件默認也只能追加寫在文件最後面(會清空同名文件謹慎使用).a+是追加讀寫模式,一般情況都用這種模式來操作文件.文件插入數據很麻煩,.所以要修改文件,建議讀出一個文件寫到一個新文件裏,數據替換完成後替換原文件
#open函數使用方式,用一個文件句柄的方式去打開一個文件.操作完以後必須關閉文件.
f = open(‘a.txt‘,‘r+‘,encoding=‘utf-8‘)
a = f.read()
f.close()
print(a)
#常用方法
#read讀取整個文件,由於是一次性讀取整個文件只適合對小文件使用.可以指定參數讀取多少個字節
a = f.read(1)
#close關閉文件
#readline每次讀取一行
#readlines讀取整個文件,可以指定參數讀取多少行
#write寫文件
#truncate截斷一個文件,保留多少個字節
#flush手動將內存緩存的數據刷寫到硬盤中,而不是等待程序的緩存控制策略去刷寫數據
#tell返回文件指針的位置
#seek移動文件指針的位置
f = open(‘a.txt‘,‘r‘,encoding=‘utf-8‘)
print(f.readline())
print(f.readline())
print(f.readline())
print( f.tell())
f.seek(10)
print( f.tell())
print(f.readline())
f.close()
with open as f
為了更好保護文件,python中提供了with函數來保護對文件的操作.所以我們要進行文件操作一定要使用with函數.在python3中with支持同時操作多個文件
#因為讀取文件是按行讀取所以for line in f:,而不是使用for i in readline:.後一種方法是讀取每一行的字符串的每一個字符
with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as f, open(‘b.txt‘,‘w+‘,encoding=‘utf-8‘) as f1:
for line in f:
text = line.strip()+‘\n‘
f1.writelines(text)
dict字典和文件操作open