csv可以比較方便的在不同應(yīng)用之間遷移數(shù)據(jù),??梢詫?shù)據(jù)批量導(dǎo)出為csv格式,,然后倒入到其他應(yīng)用程序中。很多應(yīng)用中需要導(dǎo)出報(bào)表,,也通常用csv格式導(dǎo)出,,然后用Excel工具進(jìn)行后續(xù)編輯。 import csv
# dialect是訪問(wèn)csv文件時(shí)需要指定的參數(shù)之一,,用來(lái)確定csv文件的數(shù)據(jù)格式
# 下面這個(gè)函數(shù)列舉系統(tǒng)支持的dialect有哪些,,默認(rèn)值是'excel',用戶也可 # 以從Dialect派生一個(gè)類,,使用該類的實(shí)例作為dialect參數(shù),。
print csv.list_dialects()
def test_writer():
# csv文件必須以二進(jìn)制方式open
with open('eggs.csv', 'wb') as csvfile: spamwriter = csv.writer(csvfile) spamwriter.writerow(['Spam'] * 5 + ['Baked Beans']) spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
def test_reader(): with open('eggs.csv', 'rb') as csvfile: spamreader = csv.reader(csvfile) for row in spamreader: print row # sniffer 用來(lái)推斷csv文件的格式,不是很準(zhǔn)確 def test_sniffer():
with open('eggs.csv', 'wb') as csvfile: spamwriter = csv.writer(csvfile, delimiter=' ') spamwriter.writerow(['Spam'] * 2 + ['Baked Beans']) spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam']) # 通常你需要指定與寫(xiě)入者相同的文件格式才能正確的讀取數(shù)據(jù) with open('eggs.csv', 'rb') as csvfile: spamreader = csv.reader(csvfile, delimiter=' ') for row in spamreader:
print ', '.join(row) # 如果不知道文件格式,,sniffer就可以派上用場(chǎng)了 with open('eggs.csv', 'rb') as csvfile: # 用sniffer推斷文件格式,,從而得到dialect dialect = csv.Sniffer().sniff(csvfile.read(1024)) print dialect.delimiter, dialect.quotechar # 文件重新移動(dòng)到頭部 csvfile.seek(0) # 用推斷出來(lái)的dialect創(chuàng)建reader reader = csv.reader(csvfile, dialect)
for row in reader: print ', '.join(row) |
|