import os
能够读取指定文件夹下的所有子文件。
file_list = os.listdir('./成都链家二手房数据')
print(file_list, type(file_list))
打印出来的效果:
[‘.ipynb_checkpoints’, ‘成都双流二手房信息.csv’, ‘成都大邑二手房信息.csv’, ‘成都天府新区二手房信息.csv’, ‘成都天府新区南区二手房信息.csv’, ‘成都崇州二手房信息.csv’, ‘成都彭州二手房信息.csv’, ‘成都成华二手房信息.csv’, ‘成都新津二手房信息.csv’, ‘成都新都二手房信息.csv’, ‘成都武侯二手房信息.csv’, ‘成都温江二手房信息.csv’, ‘成都简阳二手房信息.csv’, ‘成都蒲江二手房信息.csv’, ‘成都邛崃二手房信息.csv’, ‘成都郫都二手房信息.csv’, ‘成都都江堰二手房信息.csv’, ‘成都金堂二手房信息.csv’, ‘成都金牛二手房信息.csv’, ‘成都锦江二手房信息.csv’, ‘成都青白江二手房信息.csv’, ‘成都青羊二手房信息.csv’, ‘成都高新二手房信息.csv’, ‘成都高新西二手房信息.csv’, ‘成都龙泉驿二手房信息.csv’]
遍历file_list
for i in file_list:
if i[-4:] == '.csv':
print(i)
打印结果:
成都双流二手房信息.csv
成都大邑二手房信息.csv
成都天府新区二手房信息.csv
成都天府新区南区二手房信息.csv
成都崇州二手房信息.csv
成都彭州二手房信息.csv
成都成华二手房信息.csv
成都新津二手房信息.csv
成都新都二手房信息.csv
成都武侯二手房信息.csv
成都温江二手房信息.csv
成都简阳二手房信息.csv
成都蒲江二手房信息.csv
成都邛崃二手房信息.csv
成都郫都二手房信息.csv
成都都江堰二手房信息.csv
成都金堂二手房信息.csv
成都金牛二手房信息.csv
成都锦江二手房信息.csv
成都青白江二手房信息.csv
成都青羊二手房信息.csv
成都高新二手房信息.csv
成都高新西二手房信息.csv
成都龙泉驿二手房信息.csv
微软的Excel有两种后缀名:.xls、.xlsx
.xls: Excel2007以前的文件后缀名。最多容纳256列,16000+行数据。—>xlwt、xlrd
.xlsx: Excel 2007开始文件使用的后缀名。最多容纳16000+列,1048567行数据。—>openpyxl
Excel 2007开始兼容xls、xlsx后缀名。
python 能够操作Excel的模块:
openpyxl、xlsxwriter、xlwt、pandas、xlrd、win32com、xlutils等。
新版本xlsx: openpyxl。
旧版本xls: xlwt、xlrd。
windows: pip install 第三方模块
mac、linux: pip3 install 第三方模块
1.激活虚拟环境。
2.有(venv)则表示虚拟环境已激活。直接在>后面输入pip install openpyxl命令
3.没有的话 使用 .venv/scripts/activate 进行虚拟环境激活。
如果·报错:微软禁用了终端执行脚本的功能。
使用Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser解除禁用。
再次执行.venv/scripts/activate
(三)点击pycharm界面
file->Settings
工作簿:一个Excel文件就是一个工作簿。
工作表:一个工作簿的多张表格。
单元格:存储信息的方格
# 导入三方模块openpyxl 对应xlsx后缀名
import openpyxl
Workbook(): 新建文件
# 写.xlsx文件
# 1.新建一个excel文件--工作簿
# 新建文件:Workbook()
file = openpyxl.Workbook()
# 如果文件存在:openpyxl.load_workbook(文件路径和文件名)
create_sheet(表名,下标): 创建工作表对象。
# 2.操作工作表
# 创建工作表对象:create_sheet(表名, 下标)
# 如果直接在工作簿最后追加工作表,下标参数不用写。
file.create_sheet('学生成绩', 0)
file.create_sheet('学生成绩1')
表格效果:
sheetnames: 查看工作表中已经存在的工作表。
# 查看工作簿中已经存在的工作表:sheetnames
print(file.sheetnames)
打印结果:
[‘学生成绩’, ‘Sheet’, ‘学生成绩1’]
remove(表): 移除工作表。表:工作簿对象[工作表]
# 移除工作表:remove(表)-->表:工作簿对象[工作表]
file.remove(file['Sheet'])
print(file.sheetnames)
结果:
[‘学生成绩’, ‘学生成绩1’]
方法一:
使用cell(行号,列号)定位单元格。
value: 获取单元格的内容。
# 从学生成绩工作表插入信息
# 方法一:使用cell(行号, 列号)定位单元格
# cell(行号, 列号) ->定位单元格
# value:获取单元格的内容
print(file['学生成绩'].cell(1, 1).value)
file['学生成绩'].cell(1, 1).value = '姓名'
print(file['学生成绩'].cell(1, 1).value)
file['学生成绩'].cell(1, 2).value = '性别'
打印:
None
姓名
写入效果:
方法二:
使用[列号行号]定位单元格。
# 方法二:使用[列号行号]定位单元格
file['学生成绩']['AAA1'] = '姓名'
print(file['学生成绩']['AAA1'].value)
打印:
姓名
表格效果:
# 3.保存文件时才写创建的文件名字
file.save('./学生成绩.xlsx')
# 导入三方模块openpyxl 对应xlsx后缀名
import openpyxl
# 写.xlsx文件
# 1.新建一个excel文件--工作簿
# 新建文件:Workbook()
file = openpyxl.Workbook()
# 如果文件存在:openpyxl.load_workbook(文件路径和文件名)
# 2.操作工作表
# 创建工作表对象:create_sheet(表名, 下标)
# 如果直接在工作簿最后追加工作表,下标参数不用写。
file.create_sheet('学生成绩', 0)
file.create_sheet('学生成绩1')
# 查看工作簿中已经存在的工作表:sheetnames
print(file.sheetnames)
# 移除工作表:remove(表)-->表:工作簿对象[工作表]
file.remove(file['Sheet'])
print(file.sheetnames)
# 从学生成绩工作表插入信息
# 方法一:使用cell(行号, 列号)定位单元格
# cell(行号, 列号) ->定位单元格
# value:获取单元格的内容
print(file['学生成绩'].cell(1, 1).value)
file['学生成绩'].cell(1, 1).value = '姓名'
print(file['学生成绩'].cell(1, 1).value)
file['学生成绩'].cell(1, 2).value = '性别'
# 方法二:使用[列号行号]定位单元格
file['学生成绩']['AAA1'] = '姓名'
print(file['学生成绩']['AAA1'].value)
# 遍历加内容
# 3.保存文件时才写创建的文件名字
file.save('./学生成绩.xlsx')
# 导入三方模块openpyxl 对应xlsx后缀名
import openpyxl
# max_row
# max_col
# 加载xlsx文件
file = openpyxl.load_workbook('./成都链家二手房.xlsx')
# 从工作簿中找工作表
ws = file['成都链家二手房数据汇总']
# max_row:获取xlsx文件中最大行数
rows = ws.max_row # 160283
# max_column:获取xlsx文件中最大列数
col = ws.max_column # 11
# 行
for i in range(1, rows + 1):
# 列
for j in range(1, col + 1):
print(ws.cell(i, j).value)
会输出成都链家二手房数据汇总表里面的所有数据,由于数据量大,就不把结果放这里了,可以自己输出一个数据少的表。
import openpyxl
# max_row
# max_col
# 加载xlsx文件
file = openpyxl.load_workbook('./成都链家二手房.xlsx')
# 从工作簿中找工作表
ws = file['成都链家二手房数据汇总']
# max_row:获取xlsx文件中最大行数
rows = ws.max_row # 160283
# max_column:获取xlsx文件中最大列数
col = ws.max_column # 11
# 行
for i in range(1, rows + 1):
# 列
for j in range(1, col + 1):
print(ws.cell(i, j).value)
# 写操作
import xlwt
import random
add_sheet: 创建工作表+调用
# 创建文件
wb = xlwt.Workbook()
# add_sheet:创建工作表 + 调用;
sheet1 = wb.add_sheet('一年级一班成绩')
sheet2 = wb.add_sheet('一年级二班成绩')
sheet3 = wb.add_sheet('一年级三班成绩')
工作表.write(row, col, content)
# 写入数据 工作表.write(row, col, content)
names = ['张飞', '刘备', '关羽', '貂蝉', '曹操']
for i in range(len(names)):
# 写入学生名字
sheet1.write(i, 0, names[i])
# 从第二列开始
for j in range(1,4):
# 工作表.write(row, col, content)
sheet1.write(i, j, random.randint(0, 100))
# 保存关闭
wb.save('一年级成绩表.xls')
# 写操作
import xlwt
import random
# 创建文件
wb = xlwt.Workbook()
# add_sheet:创建工作表 + 调用;
sheet1 = wb.add_sheet('一年级一班成绩')
sheet2 = wb.add_sheet('一年级二班成绩')
sheet3 = wb.add_sheet('一年级三班成绩')
# 写入数据 工作表.write(row, col, content)
names = ['张飞', '刘备', '关羽', '貂蝉', '曹操']
for i in range(len(names)):
# 写入学生名字
sheet1.write(i, 0, names[i])
# 从第二列开始
for j in range(1,4):
# 工作表.write(row, col, content)
sheet1.write(i, j, random.randint(0, 100))
# 保存关闭
wb.save('一年级成绩表.xls')
import xlrd
# 打开文件
wb = xlrd.open_workbook('一年级成绩表.xls')
1.sheet_names():查看存在的所有工作表
2.sheet_by_index()
3.sheet_by_name()
4.获取行列数:nrows----获取最大行数;ncols----获取最大列数
# 选择工作表
# sheet_names():查看存在的所有工作表
print(wb.sheet_names())
# sheet_by_index()
ws = wb.sheet_by_index(0)
print(ws.cell(0, 0).value)
# sheet_by_name()
ws1 = wb.sheet_by_name('一年级一班成绩')
print(ws1.cell(0, 0).value)
# 获取行列数
# nrows:获取最大行数
# ncols:获取最大列数
print(ws1.nrows, ws1.ncols)
表是上一步创建的表。
输出:
[‘一年级一班成绩’, ‘一年级二班成绩’, ‘一年级三班成绩’]
张飞
张飞
5 4
import os
import csv
import openpyxl
# 新建xlsx后缀文件
file = openpyxl.Workbook()
# 新建工作表
file.create_sheet('成都链家二手房数据汇总')
先用os模块的listdir读出所有需要整合的数据文件。
遍历每一个文件用cell(行号,列号)方法写入xlsx文件。
行号 = 循环次数(每遍历一次获取一行数据)。
列号 = 每一行的长度,下标要加一,因为下标从0开始。
# 从源数据文件读数据
# listdir():能够读取指定文件夹下的所有子文件
file_list = os.listdir('./成都链家二手房数据')
print(file_list)
# count作用:计数进行行号的递增
count = 0
for i in file_list:
if i[-9:] == '二手房信息.csv' and i[:2] == '成都':
f = open(f'./成都链家二手房数据/{i}', 'r', encoding='utf-8')
read_data = csv.reader(f)
for j in read_data:
count += 1
for k in range(0, len(j)):
# print(k)
# 根据每一条数据长度判断写n列
file['成都链家二手房数据汇总'].cell(count, k + 1).value = j[k]
f.close()
file.save('./成都链家二手房.xlsx')
print('数据写入完成!')
import os
import csv
import openpyxl
# 新建xlsx后缀文件
file = openpyxl.Workbook()
# 新建工作表
file.create_sheet('成都链家二手房数据汇总')
# --------------------------------------------------
# 从源数据文件读数据
# listdir():能够读取指定文件夹下的所有子文件
file_list = os.listdir('./成都链家二手房数据')
print(file_list)
# count作用:计数进行行号的递增
count = 0
for i in file_list:
if i[-9:] == '二手房信息.csv' and i[:2] == '成都':
f = open(f'./成都链家二手房数据/{i}', 'r', encoding='utf-8')
read_data = csv.reader(f)
for j in read_data:
count += 1
for k in range(0, len(j)):
# print(k)
# 根据每一条数据长度判断写n列
file['成都链家二手房数据汇总'].cell(count, k + 1).value = j[k]
f.close()
# -------------------------------------------
file.save('./成都链家二手房.xlsx')
print('数据写入完成!')
1.openpyxl行列号从1开始;xlwt、xlrd行列号从0开始
2.两者都可以对工作表进行操作。
3.两者都可以用单元格定位的形式进行单元格操作。
4.xlwt写操作使用过write()写