python-各种文件(txt,xls,csv,sql,二进制文件)读写操作、文件类型转换、数据分析代码讲解

1.文件txt读写标准用法

1.1写入文件

要读取文件,首先得使用 open() 函数打开文件。
 

file = open(file_path, mode='r', encoding=None)
  • file_path:文件的路径,可以是绝对路径或者相对路径。
  • mode:文件打开模式,'r' 代表以只读模式打开文件,这是默认值,‘w’表示写入模式。
  • encoding:文件的编码格式,像 'utf-8''gbk' 等,默认值是 None

下面写入文件的示例:

#写入文件,当open(file_name,'w')时清除文件内容写入新内容,当open(file_name,'a')时直接在文件结尾加入新内容
file_name = 'text.txt'
try:with open(file_name,'w',encoding='utf-8') as file:file.write("你好!我是老叶爱吃鱼")file.write("\n你好呀,老叶,很高兴认识你")
except Exception as e:print(f'出错{e}')

系统会判断时候会有text.txt文件,没有的话会创建文件,加入写入内容,示例ru

1.2读取文件

下面是读取文件示例:

#读取文件
try:with open(file_name,'r',encoding='utf-8') as file:print(file.read())
except Exception as e:print(f'出错时输出{e}')
#打印出:你好!我是老叶爱吃鱼     你好呀,老叶,很高兴认识你
1.2.1 readline() 方法

readline() 方法每次读取文件的一行内容,返回一个字符串。

# 打开文件
file = open('example.txt', 'r', encoding='utf-8')
# 读取第一行
line = file.readline()
while line:print(line.strip())  # strip() 方法用于去除行尾的换行符line = file.readline()
# 关闭文件
file.close()
1.2.2 readlines() 方法

readlines() 方法会读取文件的所有行,并将每行内容作为一个元素存储在列表中返回。

# 打开文件
file = open('example.txt', 'r', encoding='utf-8')
# 读取所有行
lines = file.readlines()
for line in lines:print(line.strip())
# 关闭文件
file.close()
1.2.3 迭代文件对象

可以直接对文件对象进行迭代,每次迭代会返回文件的一行内容。

# 打开文件
file = open('example.txt', 'r', encoding='utf-8')
# 迭代文件对象
for line in file:print(line.strip())
# 关闭文件
file.close()

2. 二进制文件读取

若要读取二进制文件,需将 mode 参数设置为 'rb'

# 以二进制只读模式打开文件
with open('example.jpg', 'rb') as file:# 读取文件全部内容content = file.read()# 可以对二进制数据进行处理,如保存到另一个文件with open('copy.jpg', 'wb') as copy_file:copy_file.write(content)

3. 大文件读取

对于大文件,不建议使用 read() 方法一次性读取全部内容,因为这可能会导致内存不足。可以采用逐行读取或者分块读取的方式。

3.1 逐行读取
# 逐行读取大文件
with open('large_file.txt', 'r', encoding='utf-8') as file:for line in file:# 处理每行内容print(line.strip())
3.2 分块读取
# 分块读取大文件
chunk_size = 1024  # 每次读取 1024 字节
with open('large_file.txt', 'r', encoding='utf-8') as file:while True:chunk = file.read(chunk_size)if not chunk:break# 处理每个数据块print(chunk)

4.Excel表格文件的读写

4.1读取excel

import xlrd
import xlwt
from datetime import date,datetime# 打开文件
workbook = xlrd.open_workbook(r"D:\python_file\request_files\excelfile.xlsx", formatting_info=False)
# 获取所有的sheet
print("所有的工作表:",workbook.sheet_names())
sheet1 = workbook.sheet_names()[0]# 根据sheet索引或者名称获取sheet内容
sheet1 = workbook.sheet_by_index(0)
sheet1 = workbook.sheet_by_name("Sheet1")# 打印出所有合并的单元格
print(sheet1.merged_cells)
for (row,row_range,col,col_range) in sheet1.merged_cells:print(sheet1.cell_value(row,col))# sheet1的名称、行数、列数
print("工作表名称:%s,行数:%d,列数:%d" % (sheet1.name, sheet1.nrows, sheet1.ncols))# 获取整行和整列的值
row = sheet1.row_values(1)
col = sheet1.col_values(4)
print("第2行的值:%s" % row)
print("第5列的值:%s" % col)# 获取单元格的内容
print("第一行第一列:%s" % sheet1.cell(0,0).value)
print("第一行第二列:%s" % sheet1.cell_value(0,1))
print("第一行第三列:%s" % sheet1.row(0)[2])# 获取单元格内容的数据类型
# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
print("第二行第三列的数据类型:%s" % sheet1.cell(3,2).ctype)# 判断ctype类型是否等于data,如果等于,则用时间格式处理
if sheet1.cell(3,2).ctype == 3:data_value = xlrd.xldate_as_tuple(sheet1.cell_value(3, 2),workbook.datemode)print(data_value)print(date(*data_value[:3]))print(date(*data_value[:3]).strftime("%Y\%m\%d"))

4.2 设置单元格样式

style = xlwt.XFStyle()    # 初始化样式
font = xlwt.Font()    # 为样式创建字体
font.name = name    # 设置字体名字对应系统内字体
font.bold = bold    # 是否加粗
font.color_index = 5    # 设置字体颜色
font.height = height    # 设置字体大小# 设置边框的大小
borders = xlwt.Borders()
borders.left = 6
borders.right = 6
borders.top = 6
borders.bottom = 6style.font = font    # 为样式设置字体
style.borders = bordersreturn style

    4.3写入excel

    writeexcel = xlwt.Workbook()    # 创建工作表
    sheet1 = writeexcel.add_sheet(u"Sheet1", cell_overwrite_ok = True)    # 创建sheetrow0 = ["编号", "姓名", "性别", "年龄", "生日", "学历"]
    num = [1, 2, 3, 4, 5, 6, 7, 8]
    column0 = ["a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8"]
    education = ["小学", "初中", "高中", "大学"]# 生成合并单元格
    i,j = 1,0
    while i < 2*len(education) and j < len(education):sheet1.write_merge(i, i+1, 5, 5, education[j], set_style("Arial", 200, True))i += 2j += 1# 生成第一行
    for i in range(0, 6):sheet1.write(0, i, row0[i])# 生成前两列
    for i in range(1, 9):sheet1.write(i, 0, i)sheet1.write(i, 1, "a1")# 添加超链接
    n = "HYPERLINK"
    sheet1.write_merge(9,9,0,5,xlwt.Formula(n + '("https://www.baidu.com")'))# 保存文件
    writeexcel.save("demo.xls")

    5.cvs文件的读写操作

    5.1读取cvs文件

    # 读取 CSV 文件
    def read_from_csv(file_path):try:with open(file_path, 'r', encoding='utf-8') as csvfile:reader = csv.reader(csvfile)print("读取到的 CSV 文件内容如下:")for row in reader:print(row)except FileNotFoundError:print(f"错误: 文件 {file_path} 未找到!")except Exception as e:print(f"读取文件时出错: {e}")

    5.2写入cvs文件

    # 写入 CSV 文件
    def write_to_csv(file_path, data):try:with open(file_path, 'w', newline='', encoding='utf-8') as csvfile:writer = csv.writer(csvfile)# 写入表头writer.writerow(['Name', 'Age', 'City'])# 写入数据行for row in data:writer.writerow(row)print(f"数据已成功写入 {file_path}")except Exception as e:print(f"写入文件时出错: {e}")

    6.SQL文件读取

    import sqlite3
    import pandas as pd# 连接到SQLite数据库
    conn = sqlite3.connect('example.db')# 读取数据库表
    query = "SELECT * FROM table_name"
    data = pd.read_sql(query, conn)
    print(data.head())# 关闭连接
    conn.close()

    7.cvs、xls、txt文件相互转换

    一般情况下python只会对cvs文件进行数据处理,那么对于很多文件属于二进制文件不能直接处理,那么需要将二进制转为cvs文件后才能处理,如xls是二进制文件需要对xls文件转为cvs文件,操作数据后再转成xls文件即可

    7.1xls文件转cvs文件

    import pandas as pddef xls_to_csv(xls_file_path, csv_file_path):try:df = pd.read_excel(xls_file_path)df.to_csv(csv_file_path, index=False)print(f"成功将 {xls_file_path} 转换为 {csv_file_path}")except Exception as e:print(f"转换过程中出现错误: {e}")# 示例调用
    xls_file = 'example.xls'
    csv_file = 'example.csv'
    xls_to_csv(xls_file, csv_file)

    7.2cvs文件转xls文件

    import pandas as pddef csv_to_xls(csv_file_path, xls_file_path):try:df = pd.read_csv(csv_file_path)df.to_excel(xls_file_path, index=False)print(f"成功将 {csv_file_path} 转换为 {xls_file_path}")except Exception as e:print(f"转换过程中出现错误: {e}")# 示例调用
    csv_file = 'example.csv'
    xls_file = 'example.xls'
    csv_to_xls(csv_file, xls_file)

    7.3txt文件转cvs文件

    import pandas as pddef txt_to_csv(txt_file_path, csv_file_path):try:# 假设 txt 文件以空格分隔,根据实际情况修改 sep 参数df = pd.read_csv(txt_file_path, sep=' ', header=None)df.to_csv(csv_file_path, index=False, header=False)print(f"成功将 {txt_file_path} 转换为 {csv_file_path}")except Exception as e:print(f"转换过程中出现错误: {e}")# 示例调用
    txt_file = 'example.txt'
    csv_file = 'example.csv'
    txt_to_csv(txt_file, csv_file)

    7.4csv文件转txt文件

    import pandas as pddef csv_to_txt(csv_file_path, txt_file_path):try:df = pd.read_csv(csv_file_path)df.to_csv(txt_file_path, sep=' ', index=False, header=False)print(f"成功将 {csv_file_path} 转换为 {txt_file_path}")except Exception as e:print(f"转换过程中出现错误: {e}")# 示例调用
    csv_file = 'example.csv'
    txt_file = 'example.txt'
    csv_to_txt(csv_file, txt_file)

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77057.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    Uniapp:确认框

    目录 一、 出现场景二、 效果展示三、具体使用 一、 出现场景 在项目的开发中&#xff0c;会经常出现删除数据的情况&#xff0c;如果直接删除的话&#xff0c;可能会存在误删&#xff0c;用户体验不好&#xff0c;所以需要增加一个消息提示&#xff0c;提醒用户是否删除。 二…

    解密 Vue 打包策略

    1. 总体概述 在现代前端开发中&#xff0c;Vue 已成为流行框架之一&#xff0c;开发者通常使用 webpack、vite 或 vue-cli 来构建项目。可能会困惑&#xff1a; 为什么源码中的资源引用路径与打包后实际产出的路径会不一样&#xff1f;静态路径与动态路径到底如何正确书写&am…

    Golang|接口并发测试和压力测试

    文章目录 这里出现某些奖品和数据库中库存量不一致的问题原因就是在并发的情况下&#xff0c;sync.Map仍然会出现脏写问题&#xff0c;就是在同时操作下的操作覆盖问题可以先把数据放到channel里&#xff0c;然后用一个单一的协程负责读取channel并写入map

    CentOS下,Xftp中文文件名乱码的处理方式

    乱码原因 中文版Windows默认使用GBK编码&#xff0c;现代Linux发行版&#xff08;如CentOS、Ubuntu等&#xff09;默认使用UTF-8编码。Windows下正常的编码&#xff0c;可能在linux下无法识别&#xff0c;例如&#xff1a;Windows的GBK字节0xD6D0被Linux用UTF-8解码时&#xf…

    解决 Vue 中 input 输入框被赋值后,无法再修改和编辑的问题

    目录 需求&#xff1a; 出现 BUG&#xff1a; Bug 代码复现 解决问题&#xff1a; 解决方法1&#xff1a; 解决方法2 关于 $set() 的补充&#xff1a; 需求&#xff1a; 前段时间&#xff0c;接到了一个需求&#xff1a;在选择框中选中某个下拉菜单时&#xff0c;对应的…

    【含文档+PPT+源码】基于微信小程序的卫生院预约挂号管理系统的设计与实现

    项目视频介绍&#xff1a; 毕业作品基于微信小程序的卫生院预约挂号管理系统的设计与实现 课程简介&#xff1a; 本课程演示的是一款基于微信小程序的卫生院预约挂号管理系统的设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习…

    【Vue】案例——To do list:

    【Vue】案例——To do list&#xff1a; 一、案例介绍&#xff1a;二、效果展示&#xff08;如图&#xff09;三、主要功能&#xff1a;四、技术要点&#xff1a;补充&#xff1a;【Vue】Vue模板语法(点击可跳转)补充&#xff1a;【Vue】数据绑定&#xff08;单双向&#xff09…

    导入 .sql 文件到 云服务器上的MySQL中

    导入 .sql 文件到 云服务器上的MySQL中 步骤 1&#xff1a;确保 .sql 文件已上传到云服务器步骤 2&#xff1a;登录到云服务器步骤 3&#xff1a;检查文件是否成功传输步骤 4&#xff1a;登录 MySQL步骤 5&#xff1a;创建空数据库&#xff08;如果尚未创建&#xff09;步骤 6&…

    我的机器学习之路(初稿)

    文章目录 一、机器学习定义二、核心三要素三、算法类型详解1. 监督学习&#xff08;带标签数据&#xff09;2. 无监督学习&#xff08;无标签数据&#xff09;3. 强化学习&#xff08;决策优化&#xff09;(我之后主攻的方向) 四、典型应用场景五、学习路线图六、常见误区警示七…

    VueDOMPurifyHTML 防止 ​​XSS(跨站脚本攻击)​​ 风险

    VueDOMPurifyHTML 是一个 ​​Vue.js 插件​​&#xff0c;用于在 v-html 指令中安全地渲染 HTML 内容&#xff0c;防止 ​​XSS&#xff08;跨站脚本攻击&#xff09;​​ 风险。 ​​作用​​ ​​解决 v-html 的安全问题​​ Vue 的 v-html 会直接渲染原始 HTML&#xff0…

    【数据结构】之散列

    一、定义与基本术语 &#xff08;一&#xff09;、定义 散列&#xff08;Hash&#xff09;是一种将键&#xff08;key&#xff09;通过散列函数映射到一个固定大小的数组中的技术&#xff0c;因为键值对的映射关系&#xff0c;散列表可以实现快速的插入、删除和查找操作。在这…

    How AI could empower any business - Andrew Ng

    How AI could empower any business - Andrew Ng References 人工智能如何为任何业务提供支持 empower /ɪmˈpaʊə(r)/ vt. 授权&#xff1b;给 (某人) ...的权力&#xff1b;使控制局势&#xff1b;增加 (某人的) 自主权When I think about the rise of AI, I’m reminded …

    微服务的服务调用详解以及常见解决方案对比

    微服务服务调用详解 1. 服务调用分类 服务调用根据通信方式、同步性、实现模式可分为以下类型&#xff1a; 按通信协议分类 类型典型协议/框架特点RPC&#xff08;远程过程调用&#xff09;Dubbo、gRPC、Apache Thrift高性能、二进制协议、强类型定义HTTP/RESTSpring RestTe…

    MySQL:B+树索引

    InnoDB索引方案 为了使用二分法快速定位具体的目录项&#xff0c;假设所有目录项都可以在物理存储器上连续存储&#xff0c;有以下问题&#xff1a; InnoDB使用页为管理存储空间的基本单位&#xff0c;最多只能保证16KB的连续存储空间&#xff0c;记录数据量多可能需要非常大…

    THCON 2025

    Crypto OTPas_ouf 用10个字符异或加密的jpg图片&#xff0c;通过头得到key再恢复原图 Mammoths Personnal Slot Machine 梅森旋转恢复 from pwn import * from randcrack import RandCrack from tqdm import trange context.log_level errorp remote(74.234.198.209, 33…

    3.8 字符串的常用函数

    重点&#xff1a;字符串的常用函数 #1.测试转换大小写 lower:大写->小写 upper&#xff1a;小写->大写 swapcase&#xff1a;自动将大写转小写小写转大写 print("ABC".lower()) #abcprint("abc".upper()) #ABCprint…

    Docker:SkyWalking 链路追踪的技术指南

    1、简述 Apache SkyWalking 是一个开源的 APM(应用性能监控)工具,能够实现分布式系统的全链路监控、性能分析以及服务依赖关系分析。SkyWalking 支持多种语言的探针,提供强大的可视化监控和分析能力,是微服务架构下性能调优和问题排查的利器。 样例代码: https://gitee.…

    [Lc] 最长公共子序列 | Fenwick Tree(树状数组):处理动态前缀和

    目录 LCR 095. 最长公共子序列 题解 Fenwick Tree&#xff08;树状数组&#xff09;&#xff1a;处理动态前缀和 一、问题背景&#xff1a;当传统方法遇到瓶颈 二、Fenwick Tree核心设计 2.1 二进制索引的魔法 2.2 关键操作解析 更新操作&#xff08;O(log n)&#xff0…

    python3.13.0环境安装及python-docx库安装指南

    1. Python环境安装 1.1 Windows系统安装Python 下载Python安装包 • 访问Python官网 • 点击"Download Python 3.x.x"&#xff08;推荐使用3.8及以上版本&#xff09; 2. 运行安装程序 • 双击下载的安装包 • 重要&#xff1a;勾选"Add Python to environmen…

    前端VUE框架理论与应用(4)

    一、计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如: <div id="example">{{ message.split().reverse().join() }}</div> 在这个地方,模板不再是简单的声明式逻辑。你…