檔案輸入輸出及csv檔案
阿新 • • 發佈:2018-11-07
讀取檔案
fileobject=open('b.txt')
result=fileobject.read()
print(result)
fileobject.close()
測試結果如下圖所示:
寫入檔案:
fileobject=open('c.txt',mode='w') fileobject.write('hello,world.您好') fileobject.flush() #清空緩衝區 fileobject.close() print('寫入成功...') fileobject=open('c.txt') result=fileobject.read() print(result) fileobject.close()
測試結果如下圖所示:
使用上下文管理器讀取檔案
#context manager 上下文管理器 with
with open('b.txt','r') as f:
result =f.read()
print(result)
測試結果如下圖所示:
一行及多行的讀取:
#讀取一行 #context manager 上下文管理器 with with open('b.txt','r') as f: result =f.readline() print(result) print('-------------------------') #讀取多行 #context manager 上下文管理器 with with open('b.txt','r') as f: result =f.readlines() print(result)
測試結果如下圖所示:
f.readlines()是一次性讀完所有的行,存到記憶體中就關閉f ,缺點是一次讀完比較耗記憶體,對於大檔案不適用
#一行一行輸出
with open('b.txt','r') as f:
#enumerate 列舉,集合
for i,line in enumerate(f.readlines()):
print(str(i+1),'->',line)
測試結果如下圖所示:
#一行一行輸出 with open('b.txt','r') as f: #enumerate 列舉,集合 for line in f: print(line)
f是一次讀一行,在迴圈中是沒有關閉 這種缺點就是在讀取的使用佔用此文字,別人無法操作此文字
測試結果如下圖所示:
從一個檔案讀取資料並寫入另一個檔案
with open('b.txt') as b:
with open('f.txt','w') as f:
for line in b.readlines():
f.write(line)
with open('f.txt','r') as f:
#enumerate 列舉,集合
for line in f:
print(line)
如果沒有f.txt檔案,則建立,w表示覆蓋原有的文字
測試結果如下圖所示:
尋找文本里面的位置,可以在下載時候使用
fileobject=open('b.txt','a')
print('當前位置:'+str(fileobject.tell()) )
fileobject.seek(fileobject.tell()+1)
fileobject.write('膠水')
fileobject.flush()
fileobject.close()
測試結果如下圖所示:
讀取csv檔案
import csv
with open('a.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile)
for row in spamreader:
print (row)
測試結果如下圖所示:
向csv檔案中寫入資料
import csv
with open('myfile.csv','w') as f:
writer=csv.writer(f)
writer.writerows( ['1','a','30'] )
l=[['2','b','30'],['3','ww','30']]
writer.writerows(l)
import csv
with open('a.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile)
for row in spamreader:
print (row)
測試結果如下圖所示:
輸出的時候發現每一行都會有空格,這是可以在open()方法裡面加入一個引數newline=’’
import csv
with open('myfile.csv','w',newline='') as f:
writer=csv.writer(f)
writer.writerows( ['1','a','30'] )
l=[['2','b','30'],['3','ww','30']]
writer.writerows(l)
import csv
with open('myfile.csv', 'r') as csvfile:
spamreader = csv.reader(csvfile)
for row in spamreader:
print (row)
測試結果如下圖所示:
自己建立一個csv,這個csv用|來分割
with open('b.csv','r') as csvfile:
spamreader = csv.reader(csvfile,delimiter='-')
for row in spamreader:
print(row)
測試結果如下圖所示:
方言的定義及使用
#定義一個方言
print(csv.list_dialects())
#註冊新方言
csv.register_dialect('zydialect',delimiter='-')
print(csv.list_dialects())
#使用一個定義的方言
with open('b.csv','r') as csvfile:
spamreader=csv.reader(csvfile,dialect='zydialect')
for row in spamreader:
print(row)
測試結果如下圖所示: