学习python的第九天

使用os模块读取文件名

import os

file_list = os.listdir('./成都链家二手房数据')
print(file_list, type(file_list))
for i in file_list:
    if i[-4:] == '.csv':
        print(i)

os.listdir(path=‘.’)

返回一个包含由 path 指定目录中条目名称组成的列表。
该列表按任意顺序排列,并且不包括特殊条目 ‘.’ 和 ‘…’,即使它们存在于目录中。
如果有文件在调用此函数期间在被移除或添加到目录中,是否要包括该文件的名称并没有规定。
path 可以是 类路径对象。如果 path 是(直接传入或通过 PathLike 接口间接传入) bytes 类型,
则返回的文件名也将是 bytes 类型,其他情况下是 str 类型。
本函数也支持 指定文件描述符为参数,其中描述符必须指向目录。
引发一个 审计事件 os.listdir,附带参数 path。
注解 要将 str 类型的文件名编码为 bytes,请使用 fsencode()。

excel读写

微软的Excel
后缀名:.xls、.xlsx
.xls:excel2007以前的文件后缀名。最多容纳256列16000+行数据。–>xlwt,xlrd
.xlsx:excel2007开始文件使用的后缀名。最多容纳16000+列1048567行数据。
excel2007开始兼容xls、xlsx后缀名。–> openpyxl

python能够操作excel的模块:

openpyxl,xlsxwriter,xlwt,pandas,xlrd,win32com,xlutils等。

安装三方模块

windows:pip install 模块名
mac、linux:pip3 install 模块名

如何安装模块到虚拟环境

a.激活虚拟环境
b.(venv) -->虚拟环境已经激活
如果不是,使用 ./venv/scripts/activate 进行虚拟环境激活
报错:微软禁用了终端执行脚本的功能
使用 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser解除禁用
再次执行 ./venv/scripts/activate
查看已经安装过的模块:pip list
工作簿:一个excel文件就是一个工作簿。
工作表:一个工作簿的多张表格
单元格:存储信息的方格

import openpyxl

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'])

从学生成绩工作表插入信息

方法一:使用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)

保存文件

file.save('./学生成绩.xlsx')

csv文件数据写入xlsx

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 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

加载xlsx文件

file = openpyxl.load_workbook('./成都链家二手房.xlsx')

从工作簿中找工作表

ws = file['成都链家二手房数据汇总']

max_row:获取xlsx文件中最大行数

rows = ws.max_row

max_column:获取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)

你可能感兴趣的:(python,学习,开发语言)