# -*- coding: utf-8 -*-
# @Time : 2018/12/27 11:22
# @Author : zhangxinxin
# @Email : 778786617@qq.com
# @Software: PyCharm
"""
CSV(Comma-Separated Values)即逗號分隔值,可以用Excel打開查看。由於是純文本,任何編輯器也都可打開。與Excel文件不同,CSV文件中:
值沒有類型,所有值都是字符串
不能指定字體顏色等樣式
不能指定單元格的寬高,不能合並單元格
沒有多個工作表
不能嵌入圖像圖表
在CSV文件中,以,作為分隔符,分隔兩個單元格。像這樣a,,c表示單元格a和單元格c之間有個空白的單元格。依此類推。
不是每個逗號都表示單元格之間的分界。所以即使CSV是純文本文件,也堅持使用專門的模塊進行處理。Python內置了csv模塊。
"""
import csv
def reader_writer():
# 文件的讀取
filename = r'test.csv'
with open(filename) as f:
reader = csv.reader(f)
# 不能直接打印出想看到的內容, 最外層是list
# eg: print(reader) = <_csv.reader object at 0x000001FEA7A66C78>
# print(list(reader))
for row in reader:
print(reader.line_num, row)
# f.close()
# 數據的寫入
# 可以寫入一行或多行
datas = [['你是誰', '我是小愛'] , ['你在哪', '你在干什么']]
with open('test.csv', 'a', newline='') as f:
# 默認打開當前項目文件夾下, 若無則創建, 可指定路徑
writer = csv.writer(f)
for row in datas:
writer.writerow(row)
# 寫入多行數據
# writer.writerows(datas)
def Dict_reader_writer():
"""DictReader和DictWriter對象"""
filename = 'test2.csv'
headers = ['name', 'age']
datas = [{'name': 'Bob', 'age': 23},
{'name': 'Jerry', 'age': 44},
{'name': 'Tom', 'age': 15}
]
with open(filename, 'a', newline='') as f:
writer = csv.DictWriter(f, headers)
writer.writeheader()
for row in datas:
writer.writerow(row)
with open(filename) as f:
reader = csv.DictReader(f)
for row in reader:
name = row['name']
age = row['age']
print(name, age)
if __name__ == '__main__':
Dict_reader_writer()