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

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注