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

2024-05-16 02:20

本文主要是介绍python文件操作常用方法(读写txt、xlsx、CSV、和json文件),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言

用代码做分析的时候经常需要保存中间成果,保存文件格式各不相同,在这里好好总结一下关于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 pddata = {'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文件。

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

这篇关于python文件操作常用方法(读写txt、xlsx、CSV、和json文件)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993601

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

golang中reflect包的常用方法

《golang中reflect包的常用方法》Go反射reflect包提供类型和值方法,用于获取类型信息、访问字段、调用方法等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录reflect包方法总结类型 (Type) 方法值 (Value) 方法reflect包方法总结

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互