OS模块
-
使用OS模块读取文件夹中的文件名
os.listdir(path)
- 返回path指定的文件夹包含的文件或文件夹的名字的列表。import os file_list = os.listdir('./008-成都链家二手房数据') # file_list = os.listdir(r'C:\Users\86191\Desktop') (绝对路径) print(file_list) for i in file_list: if i[-4:] == '.csv': print(i)
#!/usr/bin/python3 import os, sys # 打开文件 path = "/var/www/html/" dirs = os.listdir( path ) # 列表 # 输出所有文件和文件夹 for file in dirs: print (file)
Excel文件读写
微软的Excel,目前全球使用最多,WPS国内使用较多
后缀名:.xls
、.xlsx
-
.xls
: excel 2007以前的文件后缀名。最多容纳256列16000+行数据 —>xlwt
、wlrd
-
.xlsx
: excel 2007开始文件使用的后缀名。最多容纳16000+列1048567行数据 —>openpyxl
excel 2007开始兼容xls
、xlsx
后缀名
python能够操作excel的模块:openpyxl
、xlsxwriter
、xlwt
、pandas
、xlrd
、win32com
、xlutils
等
安装三方模块
windows:pip install xxx
mac、linux: pips install xxx
如何安装模块到虚拟环境:
- 激活虚拟环境
- (venv) --> 虚拟环境已经激活
- 使用 ./venv/scripts/activate 进行虚拟环境激活
- 报错:微软禁用了终端执行脚本的功能
- 使用 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser 解除禁用
- 再次执行 ./venv/scripts/activate
查看已经安装过的模块:pip list(在终端输入)
Excel读写
- 工作簿:一个excel文件就是一个工作簿 - workbook
- 工作表:一个工作簿的多张表格 - sheet
- 单元格:存储信息的方格 - cell
Excel 写 - xlsx
import openpyxl
# 1.新建一个excel文件
# 新建文件:openpyxl.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'])
# 从学生成绩工作表插入信息
# 方法一:使用cell(行号, 列号)定位单元格
# cell(行号, 列号) -> 定位单元格
# value -> 获取单元格内容
print(file['学生成绩'].cell(1, 1).value) # None
file['学生成绩'].cell(1, 1).value = '姓名'
print(file['学生成绩'].cell(1, 1).value)
file['学生成绩'].cell(1, 2).value = '性别'
# 方法二:使用[列号行号]定位单元格
file['学生成绩']['AAA1'] = '姓名'
print(file['学生成绩']['AAA1'].value)
# 保存文件
file.save('./学生成绩.xlsx')
csv文件数据写入xlsx
import os
import csv
import openpyxl
# 新建xlsx后缀文件
file = openpyxl.Workbook()
# 新建工作表
file.create_sheet('成都链家二手房数据汇总')
# -------------------------------------------------
# 从源数据文件读数据
# listdir():能够读取指定文件夹下的所有子文件
file_list = os.listdir('./008-成都链家二手房数据')
print(file_list)
# count作用:计数进行行号的递增
count = 0
for i in file_list:
if i[-9:] == '二手房信息.csv' and i[:2] == '成都':
f = open(f'./008-成都链家二手房数据/{i}', 'r', encoding='utf-8')
read_data = csv.reader(f)
for j in read_data:
count += 1
for x in range(0, len(j)):
# 根据每一条数据长度判断写n列
file['成都链家二手房数据汇总'].cell(count, x + 1).value = j[x]
f.close()
# ---------------------------------
file.save('./成都链家二手房.xlsx')
print('数据写入完成')
Excel 读 - xlsx
import openpyxl
# max_row
# max_col
# 加载xlsx文件
file = openpyxl.load_workbook('./成都链家二手房.xlsx')
# 从工作簿中找工作表
ws = file['成都链家二手房数据汇总']
# max_row: 获取xlsx文件中最大行数
# print(ws)
rows = ws.max_row
# max_col: 获取xlsx文件中最大列数
col = ws.max_column
# 行
for i in range(1, rows + 1):
# 列
for j in range(1, col + 1):
print(ws.cell(i, j).value)