2、CSV文件操作
2.1、從csv中讀取文件
import csv
def read_csv_index():
"""通過下標的方式"""
with open('stock.csv', 'r') as f:
# csv.reader()返回的是一個迭代器,這裏的迭代器是列表
reader = csv.reader(f)
# 一般不想使用標題行使用next(reader)
next(reader) # 表示第一行開始,不是從第0行開始
for x in reader:
name = x[3]
volumn = x[-1]
print(name, volumn)
def read_csv_dict():
"""通過字典的方式讀取csv文件"""
with open("stock.csv","r") as f:
# csv.DictReader()返回的是一個迭代器,這裏的迭代器是字典
# DictReader()不會包含標題行的數據
reader = csv.DictReader(f)
for d in reader:
name = d['secShortName']
volumn = d['turnoverVol']
print(name, volumn)
if __name__ == '__main__':
read_csv_dict()
【例子】
import csv
with open("a.csv","r") as f:
# 文件中的第一行會自動作爲標題行處理,並且會根據他們得出字典中鍵的名稱
reader = csv.DictReader(f)
for line in reader: # OrderedDict([('url', 'http://www.baiodu.com'), ('name', 'baidu'), ('content', 'baidu.com')])
print(line.pop('url'),line.pop('name'),line.pop('content'))
2.2、寫入csv文件中
import csv
def write_csv():
# 第一行的標題
csv_headers = ['name', 'age', 'classroom']
values = [ ('zhangsan', 19, '508'),
('zhaosi', 20, '902'),
('wangwu', 32, '603')]
# newline參數默認值是newline='\n'
with open("test.csv",'w',encoding='utf-8',newline='') as f:
writer = csv.writer(f)
# 寫入文件標題
writer.writerow(csv_headers)
# writerows()一次寫入多行數據
writer.writerows(values)
def write_csv_dict():
"""使用字典的方式把數據寫入csv文件中"""
csv_headers=['name','age','room']
# 列表中存放的是字典
values = [
{'name':'zhangsan','age':19,'room':'508'},
{'name':'zhaosi','age':20,'room':'902'},
{'name':'wangwu','age': 32,'room':'603'}
]
with open("test.csv", 'w', encoding='utf-8',newline='') as f:
writer= csv.DictWriter(f,csv_headers)
# 寫入文件標題
writer.writeheader()
# writerows()一次寫入多行數據
writer.writerows(values)
if __name__ == '__main__':
write_csv_dict()
2.3、不使用csv模塊追加寫入文件
def save_data(self,content,code):
with open("面上項目.csv","a+",encoding="utf-8") as f:
for i in content:
csv_list = []
csv_list.append(code) # 申請代碼
csv_list.append(i[1]) # 項目名稱
csv_list.append(i[3]) # 項目類別
csv_list.append(i[4]) # 依託單位
csv_list.append(i[5]) # 負責人
csv_list.append(i[7]) # 年份
f.write(','.join(csv_list))
f.write("\n")
print("完成",code,"申請編號")
pass
3、openpyxl操作excel
3.1、創建excel文檔
import openpyxl
data = openpyxl.Workbook() # 新建工作簿
data.create_sheet('Sheet1') # 添加工作簿
#table = data.get_sheet_by_name('Sheet1') # 獲得指定名稱頁
table = data.active # 獲得當前活躍的工作頁,默認爲第一個工作頁
table.cell(1,1,'url') # 行,列,值 這裏是從1開始計數的
table.cell(1,2,'名稱')
table.cell(1,3,'時間')
table.cell(1,4,'標籤')
table.cell(1,5,'內容')
data.save('test.xlsx') # 一定要保存
3.2、追加寫入excel文檔中
import openpyxl
wb = openpyxl.load_workbook('test.xlsx')
# print(data.get_named_ranges()) # 輸出工作頁索引範圍
# print(data.get_sheet_names()) # 輸出所有工作頁的名稱
# 取第一張表
sheetnames = wb.sheetnames #wb.sheetnames獲取所有表格的名稱
table = wb[sheetnames[0]] # wb['工作簿名稱']表示通過表格名稱獲取Worksheet對象
table = wb.active # 獲取活躍的表格
# wb.remove(worksheet) or del wb[sheetname]刪除一個表格
# print(table.title) # 輸出表名
nrows = table.max_row # 獲得行數
ncolumns = table.max_column # 獲得行數
values = [
{'url':'http://www.bidchance.com/info-zhongbiao-26052140.html','name':'Guangan20190717101142001','date':'2019年07月17日','tag':'空調招標 街招標','content':'項目信息'},
{'url':'http://www.bidchance.com/info-zhongbiao-26052141.html','name':'Guangan20190717101142002','date':'2019年07月18日','tag':'空調招標 街招標2','content':'項目信息2'},
{'url':'http://www.bidchance.com/info-zhongbiao-26052142.html','name':'Guangan20190717101142003','date':'2019年07月19日','tag':'空調招標 街招標3','content':'項目信息3'},
{'url':'http://www.bidchance.com/info-zhongbiao-26052143.html','name':'Guangan20190717101142004','date':'2019年07月20日','tag':'空調招標 街招標4','content':'項目信息4'},
{'url':'http://www.bidchance.com/info-zhongbiao-26052144.html','name':'Guangan20190717101142005','date':'2019年07月21日','tag':'空調招標 街招標5','content':'項目信息5'},
]
for value in values:
table.cell(nrows+1,1).value = value['url']
table.cell(nrows + 1, 2).value = value['name']
table.cell(nrows + 1, 3).value = value['date']
table.cell(nrows+1,4).value = value['tag']
table.cell(nrows + 1, 5).value = value['content']
nrows = nrows + 1
wb.save('test.xlsx')
4、word操作
首先我們需要安裝python-docx,也就是pip install python-docx。學習可以參考https://www.jianshu.com/p/30b49d0322a9這個頁面。
# coding:utf-8
# pip install python-docx
from docx import Document
from docx.shared import Inches
document = Document() # #創建一個文檔
document.add_heading(u'Python 操作Word實例示例', level=1) #直接添加標題,參數level表示幾級標題,越小越大
#先定義標題,再添加內容
p_total = document.add_heading()
r_total = p_total.add_run("這是一個table表格")
r_total.font.bold = True # bold表示加粗,italic表示斜體
# 增加表格
# table = document.add_table(rows=1, cols=3)
table = document.add_table(rows=1, cols=3, style="Light List Accent 5") # style表示表格邊框顏色
# 設置表格表頭
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'testName'
hdr_cells[1].text = 'param'
hdr_cells[2].text = 'exc'
for i in range(3):
i = i + 1
testName = "testName"+str(i)
param = "param"+str(i)
exc="exc"+str(i)
row_cells = table.add_row().cells
row_cells[0].text = testName
row_cells[1].text = param
row_cells[2].text = exc
#添加二級標題
p_total = document.add_heading("", level=2)
r_total = p_total.add_run("這是一個二級標題")
r_total.font.bold = True # 加粗
r_total.italic = True # 斜體
img_name = "D:/test.jpg"
# width=Inches(0.5) 中的Inches表示多少英寸
document.add_picture(img_name, width=Inches(5)) # 向文檔裏添加圖片
# document.add_picture(img_name)
paragraph = document.add_paragraph('啊,這是一個例子')#添加一個段落
# run = paragraph.add_run('bold')
# run.bold = True # bold字體加粗
# run.italic = True # bold字斜體
# prior_paragraph = paragraph.insert_paragraph_before('啊,這')#在某處插入一個段落
document.save("D:/test.docx") # 保存文檔
【效果】