读写CSV数据
假如我们有一个名为stocks.csv的文件
Symbol,Price,Date,Time,Change,Volume
"AA",39.48,"6/11/2007","9:36am",-0.18,181800
"AIG",71.38,"6/11/2007","9:36am",-0.15,195500
"AXP",62.58,"6/11/2007","9:36am",-0.46,935000
"BA",98.31,"6/11/2007","9:36am",+0.12,104800
"C",53.08,"6/11/2007","9:36am",-0.25,360900
"CAT",78.29,"6/11/2007","9:36am",-0.23,225400
我们可以利用csv库完成文件的读写
import csv
with open('stock.csv') as f:
f_csv = csv.reader(f)
headers = next(f_csv)
Row = namedtuple('Row', headings) #命名一个元组
for row in f_csv:
row = Row(*r) # 能够允许我们使用row.Symbol和row.Change代替访问下标。
# 或者,我们可以将数据读入到字典中
f_csv = csv.DictReader(f)
写入时,首先要创建一个writer对象
headers = ['Symbol','Price','Date','Time','Change','Volume']
rows = [('AA', 39.48, '6/11/2007', '9:36am', -0.18, 181800),
('AIG', 71.38, '6/11/2007', '9:36am', -0.15, 195500),
('AXP', 62.58, '6/11/2007', '9:36am', -0.46, 935000),
]
with open('stocks.csv', 'w') as f:
f_csv = csv.writer(f)
f_csv.writerow(headers)
f_csv.writerows(rows)
# 如果我们有字典数据
headers = ['Symbol', 'Price', 'Date', 'Time', 'Change', 'Volume']
rows = [{
'Symbol':'AA', 'Price':39.48, 'Date':'6/11/2007',
'Time':'9:36am', 'Change':-0.18, 'Volume':181800},
{
'Symbol':'AIG', 'Price': 71.38, 'Date':'6/11/2007',
'Time':'9:36am', 'Change':-0.15, 'Volume': 195500},
{
'Symbol':'AXP', 'Price': 62.58, 'Date':'6/11/2007',
'Time':'9:36am', 'Change':-0.46, 'Volume': 935000},
]
with open('stocks.csv', 'w') as f:
f_csv = csv.DictWriter(f, headers)
f_csv.writeheader()
f_csv.writerows(rows)
读写JSON数据
使用json包将python数据结构转换为JSON
import json
data = {
'name':'ACME',
'shares':100,
'price':542.23
}
json_str = json.dumps(data)
# 将一个JSON编码的字符串转换回一个Python数据结构
data = json.loads(json_str)
处理文件时,可以使用json.dump()和json.load()来编码和解码JSON数据
with open ('data.json', 'w') as f:
json.dump(data, f)
with open('data.json', 'r') as f:
data = json.load(f)