- writeheader():将fieldnames对应的参数以列名的形式写入表格
- writerow():单行写入,以字典形式单行写入
- writrows():多行写入,以列表的形式写入,列表中的元素为字典,一个字典代表一行
import csv
with open('王者荣耀装备.csv', 'w', encoding='utf-8', newline='') as file:
myWriter = csv.DictWriter(file, fieldnames=['类型', '名称', '价格'])
# writeheader():将fieldnames对应的参数以列名的形式写入表格
myWriter.writeheader()
# writerow():单行写入,以字典的形式单行写入
myWriter.writerow({'类型': '打野', '名称': '游击宽刃', '价格': 250})
# writrows():多行写入,以列表的形式写入,列表中的元素为字典,一个字典代表一行
myWriter.writerows(
[
{'类型': '辅助', '名称': '学识宝石', '价格': 300},
{'类型': '物理', '名称': '风暴大剑', '价格': 910},
{'类型': '防御', '名称': '极寒风暴', '价格': 2100}
]
)
print('写入完成')
CSV读方法
csv.DiictReader():结果为可迭代器对象
with open('王者荣耀装备.csv','r',encoding='utf-8') as f:
# csv.DictReader()结果为可迭代器对象
result = csv.DictReader(f)
for i in result:
print(i,type(i))
Excel文件
一、种类
excel文件:后缀名为xls或xlsx
xls:office2007之前使用的后缀名版本
xlsx:office2007及以后使用的后缀名版本
- 文件大小:保存同样的数据,xlsx文件大小要小于xls文件
- 容量:xlsx大于xls;xlsx最多能保存1048576行,16384列;xls文件最多65536行256列
- 性能:xlsx优于xls
openpyxl、xlre、xlwt、win32com、xlsxwriting、xlutils等
openpyxl(掌握):操作新版xlsx后缀名
xlre,xlwt(了解,会用):旧版后缀名使用新软件打开,另存为,可以实现后缀名修改
pip install openpyxl
xlsx文件读操作工作簿(workbook)、工作表(worksheet)、单元格(cell)
一、加载文件:load_workbook()wb = load_workbook('小宝剑大药房(高新店)2018年销售数据.xlsx')
二、查看存在的工作表:sheetnamesprint(wb.sheetnames)
三、查看工作表的内容:active、工作簿对象[表名]- active:文件保存关闭时哪张表是打开状态,active就指向哪张表
- 工作簿对象[表名]:直接指定读取的工作表
print(wb.active) print(wb['工作表 1'])四、读取单元格
- 工作表.cell(行号,列号) - 行号、列号都是从1开始的数字
- 工作表[‘列号行号’] - 列号是大写英文字母,行号是从1开始的数字
sheet = wb['工作表 1'] result1 = sheet.cell(2,1) print(result1)五、获取单元格内容:value
result2 = sheet['A2'] print(result2) print(result1.value) print(result2.value)六、查看最大行、最大列
rows = sheet.max_row cols = sheet.max_column print(rows,cols)七、将全部数据取出
for row in range(1,rows+1):
for col in range(1,cols+1):
print(sheet.cell(row,col).value)
八、保存关闭:save
wb.save('小宝剑大药房(高新店)2018年销售数据.xlsx')
练习1将成都二手房.xlsx文件中的数据全部读取出来,统计’街道’中’草金立交’有多少套二手房
from openpyxl import load_workbook
# 加载工作簿
wb = load_workbook('成都二手房.xlsx')
# 查看工作表
sheetname = wb.sheetnames
print(sheetname)
# 计数
count = 0
# 遍历所有的工作表
for name in sheetname:
# 指定工作表
worksheet = wb[name]
rows = worksheet.max_row
cols = worksheet.max_column
for row in range(1, rows + 1):
for col in range(1, cols + 1):
cell_value = worksheet.cell(row, col).value
print(cell_value, end='')
if col == 4 and cell_value == '草金立交':
count += 1
print()
print(count)
xlsx写操作
一、打开文件
load_workbook(文件名) - 打开已经存在的文件
Workbook() - 创建新文件
os.path.exists(path):判断某个文件或目录是否存在,返回True或False
path参数:可以是一个文件夹,可以是一个文件(可以写相对路径)
from openpyxl import load_workbook,Workbook
import os
if os.path.exists('学生信息.xlsx'):
wb = load_workbook('学生信息.xlsx')
else:
wb = Workbook()
二、查看工作表:sheetnames
sheetlist = wb.sheetnames
三、创建工作表:create_sheet;删除工作表:工作簿.remove(工作表)if '一年级一班' not in sheetlist:
wb.create_sheet('一年级一班')
print(wb.sheetnames)
if '一年级一班1' in sheetlist:
wb.remove(wb['一年级一班1'])
四、指定被创建的工作表
sheet = wb['一年级一班']
五、写入数据sheet.cell(1,1).value = '姓名'
六、保存关闭wb.save('学生信息.xlsx')
openpyxl模块对于读和写没有明确的界限,打开一个文件以后既可以读也可以写
练习2生成一个学生成绩表,学生姓名使用Python001-Python999代替
每个学生有语文、数学、英语三个成绩,成绩随机生成,成绩范围[0,100]
生成xlsx文件
import os
from openpyxl import load_workbook, Workbook
from random import randint
if os.path.exists('学生成绩表.xlsx'):
wb = load_workbook('学生成绩表.xlsx')
else:
wb = Workbook()
sheetlist = wb.sheetnames
if '学生成绩' not in sheetlist:
wb.create_sheet('学生成绩')
sheet = wb['学生成绩']
header = ['姓名', '语文成绩', '数学成绩', '英语成绩']
for i in range(len(header)):
sheet.cell(1, i+1).value = header[i]
for row in range(1, 1000):
sheet.cell(row + 1, 1).value = f'Python{row:0>3}'
for col in range(2, 5):
sheet.cell(row + 1, col).value = randint(0, 100)
wb.save('学生成绩表.xlsx')
print('写入完成')
os模块
指Windwos、linux、Macos、Android等操作系统对应一系列操作方法(新建文件、移动、复制、删除、重命名等)
os模块可以让我们使用代码实现这些方法
import os
namelist = os.listdir()
print(namelist)
dataList = os.listdir('成都链家二手房数据')
print(dataList)
for i in dataList:
if i[i.rindex('.'):] == '.csv':
pass
二、os.path.exists(path):查看指定的文件或文件夹是否存在,返回True或False
三、os.mkdir(path):创建一个指定名称的文件夹
四、os.rmdir(path):移除一个指定名称的文件夹,被移除文件夹必须保证为空
if os.path.exists('成都链家') and os.path.exists('./成都链家/123'):
os.rmdir('成都链家/123')
os.rmdir('成都链家')
os.mkdir('./成都链家')
os.mkdir('./成都链家/123')
五、os.rename(str,dst):
str:某个文件的原名称
dst:被移动的路径和新名称
将成都链家二手房数据文件夹中的成都两个字去掉,再移动到成都链家文件夹
for name in os.listdir('成都链家二手房数据'):
if name[name.rfind('.'):] == '.csv':
old_path = f'./成都链家二手房数据/{name}'
new_path = f'./成都链家/{name[2:]}'
os.rename(old_path,new_path)
六、os.cystem(命令) - 使用os模块的system方法执行linux命令
清屏命令:windows --> cls;mac --> clear
os.system('cls')



