栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Day12

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Day12

Day12 CSV另一种读写操作 CSV写操作
  • 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及以后使用的后缀名版本

二、区别
  1. 文件大小:保存同样的数据,xlsx文件大小要小于xls文件
  2. 容量:xlsx大于xls;xlsx最多能保存1048576行,16384列;xls文件最多65536行256列
  3. 性能: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')

二、查看存在的工作表:sheetnames

print(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模块可以让我们使用代码实现这些方法

一、os.listdir(path):查看指定路径下的所有条目(文件、文件夹)
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')

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1037812.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号