python为什么找不到csv文件_python读写csv文件的方法(还没试,先记录一下)
該csv模塊定義了以下功能:
csv.reader(csvfile,dialect ='excel',** fmtparams)
返回一個(gè)reader對(duì)象,它將迭代給定csvfile中的行。?csvfile可以是任何支持迭代器協(xié)議的對(duì)象,并在每次__next__()調(diào)用其方法時(shí)返回一個(gè)字符串-?文件對(duì)象和列表對(duì)象都是合適的。如果csvfile是一個(gè)文件對(duì)象,則應(yīng)該打開它newline=''。[1]可以給出?可選的?方言參數(shù),該參數(shù)用于定義特定于CSV方言的一組參數(shù)。它可以是類的子類的實(shí)例,也可以是函數(shù)Dialect返回的字符串之一?list_dialects()。其他可選的fmtparams可以給出關(guān)鍵字參數(shù)來覆蓋當(dāng)前方言中的各個(gè)格式參數(shù)。有關(guān)方言和格式參數(shù)的完整詳細(xì)信息,請(qǐng)參閱“?方言和格式參數(shù)”一節(jié)。
從csv文件讀取的每一行都作為字符串列表返回。除非QUOTE_NONNUMERIC指定了format選項(xiàng)(在這種情況下,未加引號(hào)的字段將轉(zhuǎn)換為浮點(diǎn)數(shù)),否則不會(huì)執(zhí)行自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換。
一個(gè)簡短的用法示例:
>>>
>>> import csv
>>> with open('eggs.csv', newline='') as csvfile:
... spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
... for row in spamreader:
... print(', '.join(row))
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam
csv.writer(csvfile,dialect ='excel',** fmtparams)
返回一個(gè)編寫器對(duì)象,負(fù)責(zé)將用戶的數(shù)據(jù)轉(zhuǎn)換為給定的類文件對(duì)象上的分隔字符串。csvfile可以是帶有write()方法的任何對(duì)象?。如果csvfile是文件對(duì)象,則應(yīng)使用newline=''?[1]打開它?。?可以給出可選的方言參數(shù),該參數(shù)用于定義特定于CSV方言的一組參數(shù)。它可以是類的子類的實(shí)例,也可以是?函數(shù)Dialect返回的字符串之一list_dialects()。可以給出其他可選的fmtparams關(guān)鍵字參數(shù)來覆蓋當(dāng)前方言中的各個(gè)格式參數(shù)。有關(guān)方言和格式參數(shù)的完整詳細(xì)信息,請(qǐng)參閱部分方言和格式參數(shù)。為了使與實(shí)現(xiàn)DB API的模塊接口盡可能簡單,將值None寫為空字符串。雖然這不是可逆轉(zhuǎn)換,但它可以更容易地將SQL NULL數(shù)據(jù)值轉(zhuǎn)儲(chǔ)到CSV文件,而無需預(yù)處理從cursor.fetch*調(diào)用返回的數(shù)據(jù)。所有其他非字符串?dāng)?shù)據(jù)str()在寫入之前都會(huì)進(jìn)行字符串化。
一個(gè)簡短的用法示例:
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
csv.register_dialect(name[,dialect[,** fmtparams]?]?)
將方言與名稱聯(lián)系起來。?name必須是一個(gè)字符串。方言可以通過傳遞子類Dialect,或通過fmtparams關(guān)鍵字參數(shù)或兩者來指定,并使用關(guān)鍵字參數(shù)覆蓋方言的參數(shù)。有關(guān)方言和格式參數(shù)的完整詳細(xì)信息,請(qǐng)參閱“?方言和格式參數(shù)”一節(jié)。
csv.unregister_dialect(name)
從方言注冊(cè)表中刪除與名稱關(guān)聯(lián)的方言。Error如果name不是已注冊(cè)的方言名稱,則引發(fā)An?。
csv.get_dialect(name)
返回與姓名相關(guān)的方言。Error如果name不是已注冊(cè)的方言名稱,則引發(fā)?An?。此函數(shù)返回不可變的?Dialect。
csv.list_dialects()
返回所有已注冊(cè)方言的名稱。
csv.field_size_limit([?new_limit]?)
返回解析器允許的當(dāng)前最大字段大小。如果給出new_limit,則這將成為新限制。
該csv模塊定義了以下類:
classcsv.DictReader(f,fieldnames = None,restkey = None,restval = None,dialect ='excel',* args,** kwds)
創(chuàng)建一個(gè)像常規(guī)閱讀器一樣操作的對(duì)象,但將每行中的信息映射到OrderedDict?其鍵由可選的fieldnames參數(shù)給出。
的字段名的參數(shù)是一個(gè)序列。如果省略fieldnames,則文件f的第一行中的值將用作字段名。無論字段名如何確定,有序字典都保留其原始順序。
如果一行包含的字段多于字段名,則將剩余數(shù)據(jù)放入一個(gè)列表中,并使用restkey指定的字段名(默認(rèn)為None)進(jìn)行存儲(chǔ)。如果非空行的字段數(shù)少于字段名,則缺少的值將填入None。
所有其他可選或關(guān)鍵字參數(shù)都傳遞給基礎(chǔ)?reader實(shí)例。
在版本3.6中更改:返回的行現(xiàn)在是類型OrderedDict。
一個(gè)簡短的用法示例:
>>>
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
... reader = csv.DictReader(csvfile)
... for row in reader:
... print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese
>>> print(row)
OrderedDict([('first_name', 'John'), ('last_name', 'Cleese')])
classcsv.DictWriter(f,fieldnames,restval ='',extrasaction ='raise',dialect ='excel',* args,** kwds)
創(chuàng)建一個(gè)像常規(guī)編寫器一樣操作的對(duì)象,但將字典映射到輸出行。的字段名的參數(shù)是一個(gè)sequence標(biāo)識(shí),其中在傳遞給字典值的順序按鍵的writerow()方法被寫入到文件??F。如果字典缺少字段名中的鍵,則可選的restval參數(shù)指定要寫入的值。如果傳遞給方法的字典包含在字段名中找不到的鍵?,則可選的extrasaction參數(shù)指示要采取的操作。如果設(shè)置為,?則引發(fā)默認(rèn)值a?。如果設(shè)置為writerow()'raise'ValueError'ignore',字典中的額外值將被忽略。任何其他可選或關(guān)鍵字參數(shù)都將傳遞給基礎(chǔ)?writer實(shí)例。
請(qǐng)注意,與DictReader類不同,類的fieldnames參數(shù)DictWriter不是可選的。
一個(gè)簡短的用法示例:
import csv
with open('names.csv', 'w', newline='') as csvfile:
fieldnames = ['first_name', 'last_name']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})
類csv.Dialect
的Dialect類是依賴于主要用于它的屬性,這是用來定義一個(gè)特定的參數(shù)的容器類reader或writer實(shí)例。
類csv.excel
在excel類定義的Excel生成CSV文件的通常的性質(zhì)。它以方言名稱注冊(cè)'excel'。
類csv.excel_tab
所述excel_tab類定義Excel生成的制表符分隔的文件的通常的性質(zhì)。它以方言名稱注冊(cè)'excel-tab'。
類csv.unix_dialect
的unix_dialect類定義在UNIX系統(tǒng)上,即,使用生成的CSV文件的通常性質(zhì)'\n'如線路終端機(jī)和引用的所有字段。它以方言名稱注冊(cè)'unix'。
版本3.2中的新功能。
類csv.Sniffer
本Sniffer類用來推斷一個(gè)CSV文件的格式。
本Sniffer類提供了兩個(gè)方法:
sniff(樣本,分隔符=無)
分析給定的樣本并返回Dialect反映找到的參數(shù)的子類。如果給出了可選的delimiters參數(shù),則將其解釋為包含可能的有效分隔符的字符串。
has_header(樣本)
分析示例文本(假定為CSV格式),?True如果第一行看起來是一系列列標(biāo)題,則返回。
with open('example.csv', newline='') as csvfile:
dialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
reader = csv.reader(csvfile, dialect)
# ... process CSV file contents here ...
該csv模塊定義以下常量:
csv.QUOTE_ALL
指示writer對(duì)象引用所有字段。
csv.QUOTE_MINIMAL
指示writer對(duì)象只引用那些包含特殊字符,如字段分隔符,quotechar或任何字符lineterminator。
csv.QUOTE_NONNUMERIC
指示writer對(duì)象引用所有非數(shù)字字段。
指示讀者將所有非引用字段轉(zhuǎn)換為float類型。
csv.QUOTE_NONE
指示writer對(duì)象永遠(yuǎn)不引用字段。當(dāng)輸出數(shù)據(jù)中出現(xiàn)當(dāng)前?分隔符時(shí),它前面是當(dāng)前的escapechar?字符。如果未設(shè)置escapechar,則Error在遇到需要轉(zhuǎn)義的任何字符時(shí),編寫器將引發(fā)。
指示reader不對(duì)引號(hào)字符執(zhí)行特殊處理。
該csv模塊定義了以下異常:
異常csv.Error
檢測(cè)到錯(cuò)誤時(shí)由任何功能引發(fā)。
1.Python處理csv文件之csv.writer()
import csv
def csv_write(path,data):
with open(path,'w',encoding='utf-8',newline='') as f:
writer = csv.writer(f,dialect='excel')
for row in data:
writer.writerow(row)
return True
調(diào)用上面的函數(shù)
data = [
['Name','Height'],
['Keys','176cm'],
['HongPing','160cm'],
['WenChao','176cm']
]
csv_write('test.csv',data)
運(yùn)行結(jié)果
2.Python處理csv文件之csv.reader()
def csv_read(path):
data = []
with open(path,'r',encoding='utf-8') as f:
reader = csv.reader(f,dialect='excel')
for row in reader:
data.append(row)
return data
調(diào)用上面的函數(shù)
data = csv_read('test.csv')
print(data)
運(yùn)行結(jié)果
[['Name', 'Height'], ['Keys', '176cm'], ['HongPing', '160cm'], ['WenChao', '176cm']]
3.Python處理csv文件之csv.DictWriter()
def csv_dict_write(path,head,data):
with open(path,'w',encoding='utf-8',newline='') as f:
writer = csv.DictWriter(f,head)
writer.writeheader()
writer.writerows(data)
return True
調(diào)用上面的函數(shù)
head = ['Name','Age']
data = [
{'Name':'Keys', 'Age':28},
{'Name':'HongPing', 'Age':29},
{'Name':'WenChao', 'Age':15}
]
csv_dict_write('test2.csv',head,data)
運(yùn)行結(jié)果
4.Python處理csv文件之csv.DictReader()
def csv_dict_read(path):
with open(path,'r',encoding='utf-8') as f:
reader = csv.DictReader(f,dialect='excel')
for row in reader:
print(row['Name'])
調(diào)用上面的函數(shù)
csv_dict_read('test2.csv')
運(yùn)行結(jié)果
Keys
HongPing
WenChao
總結(jié)
以上是生活随笔為你收集整理的python为什么找不到csv文件_python读写csv文件的方法(还没试,先记录一下)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python paramiko_pyth
- 下一篇: netty 进程挂起_这可能是目前最透彻