python文件操作常用方法(读写txt、xlsx、CSV、和json文件)

news2024/11/24 5:01:33

引言

用代码做分析的时候经常需要保存中间成果,保存文件格式各不相同,在这里好好总结一下关于python文件操作的方法和注意事项
Python 提供了丰富的文件操作功能,允许我们创建、读取、更新和删除文件。允许程序与外部世界进行交互。


文章目录

    • 引言
  • 一、txt文件操作:open()函数,seek()函数, tell() 函数,flush()函数
  • 二、CSV文件(.csv)
    • 1.使用csv模块读写CSV文件
    • 2.使用pandas库读写CSV文件
  • 三、Excel文件(.xlsx)
  • 四、 JSON文件(.json)
  • 五、总结


一、txt文件操作:open()函数,seek()函数, tell() 函数,flush()函数

Python 的内置 open() 函数可以打开几乎任何类型的文件,只要它们位于你的文件系统中,并且你有适当的权限去访问它们。这里的 “类型” ,通常不是指文件的内容类型(如文本、图像、音频等),而是指文件的存储和访问方式。

  1. open() 函数打开文件,返回一个文件对象。用于后续的文件操作-读、写
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

file:必需,表示要打开的文件名(可以是相对路径或绝对路径)。
mode:可选,指定文件打开模式。默认为 ‘r’,即只读模式。常用的模式包括:
'r':只读模式(默认)。
'w':只写模式,如果文件不存在则创建它;如果文件已存在,则覆盖它。
'x':创建写模式,如果文件已存在则失败。
'a':追加模式,如果文件不存在则创建它;如果文件已存在,则在文件的末尾写入。
'b':二进制模式(可以与上述模式组合使用,如 ‘rb’、‘wb’ 等)。
'+':更新模式,可以读取也可以写入(如 ‘r+’、‘w+’、‘a+’)
buffering:可选,设置缓冲策略。默认为 -1,表示使用默认缓冲策略(对于二进制文件和文本文件不同)。其他可选值有 0(无缓冲)、1(行缓冲)、一个大于 1 的整数(缓冲区大小)。
encoding:可选,用于指定文本文件的字符编码,如 ‘utf-8’。默认为 None,表示使用系统默认编码。
errors:可选,指定在读取或写入文件时遇到编码错误时的处理方式。默认为 None,表示使用默认的错误处理方式。
newline:可选,控制文本文件中的换行符。默认为 None,表示使用系统默认的换行符(对于不同系统可能是 \n 或 \r\n)。
closefd:可选,在 os.open() 打开的文件描述符上是否应该关闭。默认为 True。
opener:可选,一个可调用对象,用于打开文件描述符。默认为 None,表示使用内置的 os.open() 函数。


  1. 文件操作完成后,应使用 close() 方法关闭文件,或者使用 with 语句来自动管理文件的打开和关闭。
    在打开文件时,可以使用相对路径(当前文件夹下’filename.txt’)或绝对路径来指定文件名。相对路径是相对于当前工作目录的路径,而绝对路径则是完整的文件系统路径。

1)txt读取

file = open('filename.txt', 'r')  # 以读模式打开文件
content = file.read()  # 读取整个文件  
content = file.read(10)  # 读取前10个字符
line = file.readline()  # 读取一行  
lines = file.readlines()  # 读取所有行
file.close()

2)txt写

file = open('filename.txt', 'w')  # 以写模式打开文件(会覆盖原有内容)  
file.write('Hello, World!')  # 写入内容  
file.close()  

注意:'w’只写模式,如果文件不存在则创建它;如果文件已存在,则覆盖它

3)txt追加

file = open('filename.txt', 'a')  # 以追加模式打开文件(在文件末尾添加内容)  
file.write('\nAnother line.')  # 追加内容
file.close()

4)使用 with ...as...语句

with open('filename.txt', 'r') as file:  
    content = file.read()  
    # 在这里处理文件内容  
# 文件在这里自动关闭

5)异常处理
文件操作可能会引发各种异常,例如文件不存在、没有权限等。为了处理这些异常,可以使用 Python 的 try-except 块。

try:  
    file = open('filename.txt', 'r')  
    content = file.read()  
except FileNotFoundError:  
    print("文件不存在")  
finally:  
    if 'file' in locals() and not file.closed:  
        file.close()

6)文件其他操作:使用 seek() 和 tell() 来读取文件的特定部分
文件操作中:seek(), tell(), 和 flush() 也是常用的方法,它们分别用于移动文件读取/写入的指针位置、获取当前文件指针的位置,以及将缓冲区中的数据强制写入文件
当前文件夹中有example.txt文件

Hello, World!  
This is an example file.

可以使用 seek() 和 tell() 来读取文件的特定部分。

with open('example.txt', 'r+') as f:  
    # 读取前13个字符(即 "Hello, World!")  
    print(f.read(13))  
  
    # 使用tell()查看当前文件指针的位置  
    print("Current file position:", f.tell())  # 输出应该是 13  
  
    # 使用seek()将文件指针移动到文件的开头  
    f.seek(0)  
  
    # 再次读取整个文件以验证指针已移动回开头  
    print(f.read())  
  
    # 将文件指针移动到文件中间(例如,跳过第一行)  
    f.seek(14)  # 跳过 "Hello, World!\n" 这部分  
  
    # 读取从当前位置到文件末尾的内容  
    print(f.read())

flush() 方法通常用于确保所有待写入的数据都被实际写入到磁盘上的文件中,而不是仅仅停留在内存缓冲区中。

with open('output.txt', 'w') as f:  
    f.write("This is some importance data that will be written to the file.")  
    # 在正常情况下,数据可能会留在缓冲区中,直到文件关闭时才会被写入  
    # 但是,如果我们想立即确保数据被写入文件,我们可以调用 flush()  
    f.flush()  
    print("Data has been flushed to the file.")  
  
	# 现在,即使我们没有关闭文件,数据也应该已经被写入到 output.txt 中了

二、CSV文件(.csv)

1.使用csv模块读写CSV文件

读:

import csv  
  
with open('file.csv', 'r', newline='', encoding='utf-8') as file:  
    reader = csv.reader(file)  
    for row in reader:  
        print(row)

写:

import csv  
  
data = [['Name', 'Age'], ['Alice', 25], ['Bob', 30], ['Ralan', 5], ['Thy', 32]] 
  
with open(r'F:/RasoDatasets/csdn_test/file.csv', 'w', newline='', encoding='utf-8') as file:  
    writer = csv.writer(file)  
    writer.writerows(data)

测试结果:
在这里插入图片描述

2.使用pandas库读写CSV文件

读:

import pandas as pd  
  
df = pd.read_csv('file.csv')  
print(df)

写:

import pandas as pd  
  
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}  
df =   
df.to_csv('file.csv', index=False)

注:pandas库更适合数据分析哦!
在Python的pandas库中,pd.DataFrame(data) 是用来从各种数据输入源创建一个新的DataFrame对象的。这里的 data 可以是多种格式,包括列表、字典、二维数组(如NumPy数组)等。

import pandas as pd  
  
data1 = {  
    'Name': ['Alice', 'Bob', 'Charlie'],  
    'Age': [25, 30, 35],  
    'City': ['New York', 'San Francisco', 'Los Angeles']  
}  
data2 = [  
    ['Alice', 25, 'New York'],  
    ['Bob', 30, 'San Francisco'],  
    ['Charlie', 35, 'Los Angeles']  
]
data3 = np.array([  
    ['Alice', 25, 'New York'],  
    ['Bob', 30, 'San Francisco'],  
    ['Charlie', 35, 'Los Angeles']  
]) 
columns = ['Name', 'Age', 'City']    

df1 = pd.DataFrame(data1)  # 从字典创建DataFrame
df2 = pd.DataFrame(data2, columns=columns)  # 从列表的列表创建DataFrame
df3 = pd.DataFrame(data3, columns=columns)  # 从二维数组创建DataFrame
print(df1,'\n',df2,'\n',df3,'\n')

输出一样的结果
在这里插入图片描述


三、Excel文件(.xlsx)

使用pandas模块读写Excel文件
写:

import pandas as pd

data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)
df.to_excel(r'F:/RasoDatasets/csdn_test/fileXl.xlsx', index=False)

测试写Excel文件
在这里插入图片描述
注意:需要保证环境安装了openpyxl,否则会报错ModuleNotFoundError: No module named 'openpyxl':使用pip install openpyxl安装缺失模块。
读:

import pandas as pd  
  
df = pd.read_excel('file.xlsx')  
print(df)

四、 JSON文件(.json)

使用json 模块读写JSON文件

写:

import json  
  
data = {'name': 'Alice', 'age': 25}  
  
with open('file.json', 'w', encoding='utf-8') as file:  
    json.dump(data, file, ensure_ascii=False, indent=4)

测试写文件结果:
在这里插入图片描述

读:

import json  
  
with open(r'F:/RasoDatasets/csdn_test/file.json', 'r', encoding='utf-8') as file:  
    data = json.load(file)  
print(data)

五、总结

1.文本对open()函数,seek()函数, tell() 函数,flush()函数等文件操作函数做了简单的介绍,和实例应用。
2.使用文件工具,pandas,csv,json等操作txt,cvs,excel,json文件。

关注,收藏;多多浏览,书读百遍

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

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

相关文章

用c++实现快速排序、最大子段和问题

6.2.2 快速排序 【问题】快速排序(quick sort)的分治策略如下(图6-5)。 (1)划分:(选定一个记录作为轴值,以轴值为基准将整个序列划分为两个子序列,轴值的位置在划分的过程中确定,并且左侧子序列的所有记录…

mysql主从热备+keepalived 部署mysql高可用主备模式

目录 1、环境准备 2、分别在主服务器和备用服务器上安装keepalived 3、修改keepalived服务的配置文件 3.1 修改主服务器上的keepalive服务的配置文件 3.2 修改备用服务器上的keepalive服务配置文件 4、编写mysql监控脚本放到主服务器上 5、在主服务器和备用服务器上查看…

工厂自动化升级改造(3)-Modbus与MQTT的转换

什么是MQTT,Modbus,见下面文章 工厂自动化升级改造参考(01)--设备通信协议详解及选型-CSDN博客文章浏览阅读608次,点赞9次,收藏6次。>>特点:基于标准的以太网技术,使用TCP/IP协议栈,支持高速数据传输和局域网内的设备通信。>>>特点:跨平台的通信协议,…

【Java基础】集合(2) —— List

List 存储的对象是有序的&#xff08;集合中存储对象的顺序和使用add方法添加对象的顺序一致&#xff09;&#xff0c;存储的对象是可重复的。 List的特有的功能: 都是可以操作索引的功能。 增: void add(int index, E element )boolean addAll(int index, Collection<? …

全面提升数据采集效率:IP代理产品的应用与评估详解

全面提升数据采集效率&#xff1a;IP代理产品的应用与评估详解 文章目录 全面提升数据采集效率&#xff1a;IP代理产品的应用与评估详解背景应用场景&#xff1a;平台首页信息抓取准备评测素材详细的产品使用和评测流程产品介绍亮数据的IP代理服务亮数据的爬虫工具及采集技术 注…

MFC通过继承现有控件自定义控件

在MFC 自定义控件&#xff0c;可以通过继承MFC提供的控件类&#xff08;如CButton、CEdit、CListBox等&#xff09;并重写其成员函数和消息处理函数来实现。 以下是一个基本的步骤指南&#xff0c;用于在MFC中创建自定义控件&#xff1a; 确定要继承的基类&#xff1a; 首先…

AutoNeRF:Training Implicit Scene Representations with Autonomous Agents

论文概述 《AutoNeRF》是由Pierre Marza等人撰写的一篇研究论文&#xff0c;旨在通过自主智能体收集数据来训练隐式场景表示&#xff08;如神经辐射场&#xff0c;NeRF&#xff09;。传统的NeRF训练通常需要人为的数据收集&#xff0c;而AutoNeRF则提出了一种使用自主智能体高效…

大模型来了,创业者怎么做出好产品?

大模型的问世惊艳了人们的目光&#xff0c;打开了对AI想象力——生成未来&#xff0c;是谁的未来&#xff1f; “电的发明并不是只能让爱迪生的公司成为全球最大公司&#xff0c;而是为众多电器制造商也提供了巨大的商机。从人类科技史的角度来看&#xff0c;应用层面的价值往…

C++列表实现

文章目录 一、listView相关内容主要思想实例全部代码 二、QTreeView 一、listView 相关内容 QAbstractItemModel&#xff1a;一个抽象的类&#xff0c;为数据项模型提供抽象的接口&#xff0c;常见的的数据模型列如&#xff1a;QStringListModel,QStandardItemMode,QDirModel…

第一个fyne应用

第一个fyne应用 由于在写一个milvus的图形化工具&#xff0c;方便客户端使用&#xff0c;调研了一下只有这fyne的go-gui的star最多&#xff0c;比较流行&#xff0c;因此打算使用这个框架来进行milvus的工具开发。 第一个fyne应用 依赖go.mod: module fynedemogo 1.20requi…

BGP学习三:BGP路由优选12条规则,闪亮登场啦啦啦啦啦

目录 一.BGP策略工具 &#xff08;1&#xff09;Router-policy作用 &#xff08;2&#xff09;组成部分 &#xff08;3&#xff09;router-policy注意事项 二.优选规则 ①丢弃下一跳不可达 (1)优选prefered-value值大的路由 1.首选优先级 (2)优选local-preference(本地…

绿色消费新趋势:共享购模式的积分革命

在当今绿色消费风潮中&#xff0c;一种名为共享购的新模式正悄然兴起&#xff0c;它通过创新的绿色积分机制&#xff0c;不仅鼓励了消费者的绿色消费行为&#xff0c;还为消费者和商家带来了更多的实惠与额外收益。 传统积分机制的局限 在传统的消费积分模式中&#xff0c;消费…

VMware Workstation 安装CentOS Linux操作系统

1.我们已经下载好VMware 创建新的虚拟机 2.选择典型 3.安装程序光盘映像文件 4.配置用户名密码 5.命名虚拟机&#xff0c;并确定位置 6.如图所示设置 7.等待&#xff08;时间会有点久&#xff09; 8.输入密码登入账号

高德、百度开车导航APP是怎么知道红绿灯倒计时的?

高德、百度开车导航APP之所以能够知道红绿灯的倒计时&#xff0c;这背后是一系列复杂的科技手段和数据分析的综合运用。从交管部门提供的数据&#xff0c;到导航软件自身通过大数据和算法进行的计算&#xff0c;每一个环节都为红绿灯倒计时的准确呈现提供了支撑。 首先&#xf…

XMind 头脑风暴/思维导图软件_V24.04.10291 PC高级版

一款风靡全球的头脑风暴和思维导图软件&#xff0c;为激发灵感和创意而生。在国内使用广泛&#xff0c;拥有强大的功能&#xff0c;包括思维管理&#xff0c;商务演示&#xff0c;与办公软件协同工作等功能。XMind中文版采用全球先进的Eclipse RCP软件架构&#xff0c;是集思维…

搞大事!法国邀请芬兰公司建量子工厂

法国当地时间5月13日&#xff0c;法国总统马克龙宣布启动2024年度“选择法国”&#xff08;Choose France&#xff09;商业峰会。今年峰会召开前&#xff0c;法国赢得了创纪录的150亿欧元外国投资承诺&#xff0c;覆盖从人工智能到制药和能源等领域。 而涉及到量子领域最重磅的…

技术架构

一、单机架构 简介&#xff1a;应用服务和数据库服务共用一台服务器 出现原因:出现在互联网早期&#xff0c;访问量比较小&#xff0c;单机足以满足 架构工作原理&#xff1a;以电商为例&#xff0c;可以看到通过应用&#xff08;划分了多个模块&#xff09;和数据库在单个服…

能自动化视频剪辑的开源工具来了 剪辑师、自媒体作者狂喜

项目简介 Funclip 是阿里巴巴通义实验室开源的一款视频剪辑工具&#xff0c;专门用于精准、便捷的视频切片。 它能够自动识别视频中的中文语音并允许用户根据语音内容来裁剪视频。该工具使用了阿里巴巴语音识别模型FunASR Paraformer-Large确保了剪辑的精准性。 你可以根据识…

聚鼎科技:装饰画行业到底怎么样

在当代社会&#xff0c;随着人们审美水平的提升和生活品质的追求&#xff0c;装饰画行业呈现出蓬勃的发展态势。这一行业不仅关系到文化艺术的传承与创新&#xff0c;也与市场经济紧密相连&#xff0c;其前景值得深入探讨。 装饰画行业的市场潜力巨大&#xff0c;它贯穿于家居装…

其它高阶数据结构②_图(概念+存储+遍历+最小生成树)

目录 1. 图的概念 2. 图的存储结构 2.1 邻接矩阵&#xff08;后面算法所用&#xff09; 2.2 邻接表 3. 图的遍历 3.1 BFS广度优先遍历 3.2 DFS深度优先遍历 4. 最小生成树 4.1 Kruskal算法 4.2 Prim算法 本篇完。 1. 图的概念 图是由顶点集合及顶点间的关系组成的一…