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