当前位置: 首页 > news >正文

Python-文件操作

在这里插入图片描述

1. 文件操作基础

1.1 打开文件

在Python中使用open()函数来打开文件:

file = open('example.txt', 'r')  # 以只读模式打开文件
文件打开模式:
  • 'r' - 只读(默认)
  • 'w' - 写入,会覆盖已有文件
  • 'a' - 追加,写入到文件末尾
  • 'x' - 创建新文件,如果文件已存在则失败
  • 'b' - 二进制模式
  • 't' - 文本模式(默认)
  • '+' - 更新(可读可写)

1.2 读取文件内容

# 读取整个文件
content = file.read()# 逐行读取
for line in file:print(line)# 读取一行
line = file.readline()# 读取所有行到一个列表
lines = file.readlines()

1.3 写入文件

file = open('example.txt', 'w')
file.write("Hello, World!\n")
file.writelines(["Line 1\n", "Line 2\n"])

1.4 关闭文件

file.close()
最佳实践:使用with语句
with open('example.txt', 'r') as file:content = file.read()
# 文件会在with块结束后自动关闭

2. 高级文件操作

2.1 文件指针操作

with open('example.txt', 'r+') as file:# 获取当前位置position = file.tell()# 移动指针到文件开头file.seek(0)# 移动指针到第10个字节file.seek(10)

2.2 二进制文件操作

with open('image.jpg', 'rb') as file:data = file.read()

2.3 文件属性检查

import os# 检查文件是否存在
if os.path.exists('example.txt'):print("文件存在")# 获取文件大小
size = os.path.getsize('example.txt')

3. 文件和目录管理

3.1 目录操作

import os# 创建目录
os.mkdir('new_dir')# 递归创建目录
os.makedirs('dir1/dir2/dir3')# 列出目录内容
files = os.listdir('.')

3.2 文件路径操作

import os# 获取绝对路径
abs_path = os.path.abspath('example.txt')# 路径拼接
full_path = os.path.join('dir1', 'dir2', 'file.txt')# 获取文件名和扩展名
filename, ext = os.path.splitext('document.pdf')

4. 使用场景与最佳实践

4.1 日志记录

def log_message(message):with open('app.log', 'a') as log_file:log_file.write(f"{datetime.now()}: {message}\n")

最佳实践

  • 使用追加模式(‘a’)避免覆盖已有日志
  • 包含时间戳
  • 考虑使用Python的logging模块进行更专业的日志记录

4.2 配置文件读取

import json# 读取JSON配置文件
with open('config.json', 'r') as config_file:config = json.load(config_file)

最佳实践

  • 使用标准格式如JSON或YAML
  • 提供默认配置
  • 处理文件不存在的情况

4.3 数据处理

# 处理CSV文件
import csvwith open('data.csv', 'r') as csvfile:reader = csv.DictReader(csvfile)for row in reader:process_data(row)

最佳实践

  • 对于大型文件,考虑逐行处理而非全部读入内存
  • 使用专门的库如pandas处理复杂数据

4.4 临时文件

import tempfile# 创建临时文件
with tempfile.NamedTemporaryFile(delete=False) as temp_file:temp_file.write(b"Some temporary data")temp_path = temp_file.name

最佳实践

  • 使用tempfile模块创建临时文件
  • 考虑是否需要在程序结束后保留文件

5. 错误处理

try:with open('nonexistent.txt', 'r') as file:content = file.read()
except FileNotFoundError:print("文件不存在")
except PermissionError:print("没有权限访问文件")
except IOError as e:print(f"IO错误: {e}")

最佳实践

  • 总是处理文件操作可能引发的异常
  • 提供有意义的错误信息
  • 考虑在文件不存在时创建文件或使用默认值

6. 性能考虑

  1. 缓冲:Python默认使用缓冲,对于大量小文件写入,可以调整缓冲区大小

    with open('large_file.txt', 'w', buffering=8192) as f:# 使用8KB缓冲区
    
  2. 内存映射:对于超大文件,考虑使用mmap模块

    import mmap
    with open('large_file.txt', 'r+') as f:mm = mmap.mmap(f.fileno(), 0)# 直接操作内存映射
    
  3. 并行处理:对于需要处理多个文件的情况,考虑使用多线程或多进程

7. 总结

Python提供了丰富的文件操作功能,从基本的读写到高级的文件系统管理。遵循以下最佳实践:

  1. 总是使用with语句确保文件正确关闭
  2. 处理所有可能的异常
  3. 根据需求选择合适的文件打开模式
  4. 对于大型文件,考虑内存高效的读取方式
  5. 使用标准库模块处理特定格式(如csvjson等)
  6. 考虑使用专门的库处理复杂场景(如pandas处理数据)

掌握这些文件操作技巧将使你能够高效地处理各种文件相关的编程任务。

相关文章:

Python-文件操作

1. 文件操作基础 1.1 打开文件 在Python中使用open()函数来打开文件: file open(example.txt, r) # 以只读模式打开文件文件打开模式: r - 只读(默认)w - 写入,会覆盖已有文件a - 追加,写入到文件末尾…...

Apache 配置负载均衡详解(含配置示例)

Apache 是互联网上最受欢迎的 Web 服务器之一。除了基本的网页服务,它还能通过模块扩展出丰富的功能。其中一个重要用途就是将 Apache 配置成负载均衡器,用于在多个后端服务器之间分配流量,提升网站的性能和稳定性。Google Gemini中国版调用G…...

文章记单词 | 第24篇(六级)

一,单词释义 liner:名词,意为 “班轮;邮轮;衬里;画线者”convention:名词,意为 “大会;会议;习俗;惯例;公约;协定”lavat…...

日本汽车规模性经济计划失败,日产三大品牌的合并合作共赢,还是绝地求生?本田与日产合并确认失败,将成为世界第三大汽车集团愿景失败

本田与日产(含三菱汽车)的合并计划最终因核心矛盾无法调和而宣告失败,这一事件揭示了传统车企在行业变革期的深层困境。以下从合并动机、失败原因、本质判断及未来影响等方面综合分析: 一、合并的初衷:生存压力主导的被动策略 市场危机与财务困境 中国市场溃败:日系品牌在…...

人工智能赋能工业制造:智能制造的未来之路

一、引言 随着人工智能技术的飞速发展,其应用场景不断拓展,从消费电子到医疗健康,从金融科技到交通运输,几乎涵盖了所有行业。而工业制造作为国民经济的支柱产业,也在人工智能的浪潮中迎来了深刻的变革。智能制造&…...

支持selenium的chrome driver更新到135.0.7049.42

最近chrome释放新版本:135.0.7049.42 如果运行selenium自动化测试出现以下问题,是需要升级chromedriver才可以解决的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only su…...

C++/Qt 模拟sensornetwork的工作

C/Qt 可视化模拟sensornetwork的工作 C/Qt 模拟sensornetwork的工作 C/Qt 可视化模拟sensornetwork的工作内容简介(一) 需求和规格说明(1)问题描述(2)设计目的(3)基本要求&#xff0…...

无状态版的DHCPv6是不是SLAAC? 笔记250405

无状态版的DHCPv6是不是SLAAC? 笔记250405 无状态版 DHCPv6 不是 SLAAC,但二者在 IPv6 网络中可协同工作。以下是核心区别与协作关系: 本质区别 特性SLAAC无状态 DHCPv6主要功能生成 IPv6 地址(基于路由器通告的前缀)分发 DNS、…...

前端判断值相等的方法和区别

1. (宽松相等) 在比较之前会进行类型转换 可能导致一些意外的结果 0 // true 0 0 // true false 0 // true null undefined // true [1,2,3]1,2,3 // true2. (严格相等) 不进行类型转换 类型和值都必须相同 0 // false 0 0 // false false 0 /…...

AWS全球化低延迟架构实战:助力APP快速上架欧美、加拿大、澳大利亚

作者:AWS解决方案架构师 关键词:AWS全球架构、低延迟优化、多区域部署、Serverless、GDPR合规 一、客户需求分析 客户计划将APP上架至欧美(欧盟)、加拿大、澳大利亚等地区,并要求: 全球用户低延迟访问&…...

Maven使用

配置 Maven repository 教学视频 windows环境 idea配置 Maven项目结构 src:主项目文件 main:项目文件,其中java存放java文件,resource存放其他文件如图片文件等;test存放测试文件,如果需要也可以自己创建一个resources文件 target:主要存放我运行后的jar包等,以及一些…...

笔试强训题(7)

目录 1. Day371.1 旋转字符串(字符串)1.2 合并k个已排序的链表(链表)1.3 滑雪(记忆化搜索) 2. Day382.1 天使果冻(递推 DP)2.2 dd爱旋转(模拟)2.3 小红取数&…...

2023-2024总结记录

概括经历 这一年算是一个人生节点,2023年花了一整年的时间在准备考研,基本上等于一个人奋战,我不怎么去图书馆,只呆在无人的实验室,还好有对象陪我,不然可能要抑郁了。作息上还是很随意,什么时…...

类初始化、类加载、垃圾回收---JVM

创建对象过程 类加载 一个类从被加载到虚拟机内存中开始,到从内存中卸载,整个生命周期需要经过七个阶段:加载 、验证、准备、解析、初始化、使用和卸载。 类加载过程分为三个主要步骤:加载、链接、初始化 加载:通过…...

交换机与ARP

交换机与 ARP(Address Resolution Protocol,地址解析协议) 的关系主要体现在 局域网(LAN)内设备通信的地址解析与数据帧转发 过程中。以下是二者的核心关联: 1. 基本角色 交换机:工作在 数据链…...

元宇宙概念下,UI 设计如何打造沉浸式体验?

一、元宇宙时代UI设计的核心趋势 在元宇宙概念下,UI设计的核心目标是打造沉浸式体验,让用户在虚拟世界中感受到身临其境的交互效果。以下是元宇宙时代UI设计的几个核心趋势: 沉浸式体验设计 元宇宙的核心是提供沉浸式体验,UI设计…...

pycharm 有智能提示,但是没法自动导包,也就是alt+enter无效果

找到file->settings->editor->inspections 把python勾选上,原来不能用是因为只勾选了一部分。...

神经网络与深度学习:案例与实践——第三章(3)

神经网络与深度学习:案例与实践——第三章(3)——基于Softmax回归完成鸢尾花分类任务 实践流程主要包括以下7个步骤:数据处理、模型构建、损失函数定义、优化器构建、模型训练、模型评价和模型预测等, ①数据处理&am…...

LeetCode 249 解法揭秘:如何把“abc”和“bcd”分到一组?

文章目录 摘要描述痛点分析 & 实际应用场景Swift 题解答案可运行 Demo 代码题解代码分析差值是怎么来的?为什么加 26 再 %26? 示例测试及结果时间复杂度分析空间复杂度分析总结 摘要 你有没有遇到过这种情况:有一堆字符串,看…...

【Kafka基础】topic命令行工具kafka-topics.sh:基础操作命令解析

Kafka作为分布式流处理平台的核心组件,其主题管理是每个开发者必须掌握的关键技能。本文将详细解析kafka-topics.sh工具的使用技巧,从基础操作操作开始,助您轻松驾驭Kafka主题管理。 1 创建主题 /export/home/kafka_zk/kafka_2.13-2.7.1/bin/…...

C++ 排序(1)

以下是一些插入排序的代码 1.插入排序 1.直接插入排序 // 升序 // 最坏&#xff1a;O(N^2) 逆序 // 最好&#xff1a;O(N) 顺序有序 void InsertSort(vector<int>& a, int n) {for (int i 1; i < n; i){int end i - 1;int tmp a[i];// 将tmp插入到[0,en…...

Business English Certificates (BEC) 高频词汇学习

Business English Certificates {BEC} 高频词汇 References Cambridge English: Business Certificates, also known as Business English Certificates (BEC), are a suite of three English language qualifications for international business. abandon /əˈbndən/ vt. …...

信息系统项目管理中各个知识领域的概要描述及其管理流程

1. 立项管理 涵义&#xff1a;评估项目可行性&#xff0c;决定是否启动。 流程&#xff1a; 需求分析&#xff1a;识别业务需求或问题。 可行性研究&#xff1a;技术、经济、法律等可行性分析。 项目建议书&#xff1a;提交初步方案。 立项评审&#xff1a;高层审批。 项目…...

OpenAI推出PaperBench

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

基于LSTM的文本分类2——文本数据处理

前言 由于计算机无法认识到文字内容&#xff0c;因此在训练模型时需要将文字映射到计算机能够识别的编码内容。 映射的流程如下&#xff1a; 首先将文字内容按照词表映射到成唯一的数字ID。比如“我爱中国”&#xff0c;将“中”映射为1&#xff0c;将“国”映射到2。再将文…...

神经网络与深度学习:案例与实践——第三章(2)

神经网络与深度学习&#xff1a;案例与实践——第三章&#xff08;2&#xff09; 基于Softmax回归的多分类任务 Logistic回归可以有效地解决二分类问题&#xff0c;但在分类任务中&#xff0c;还有一类多分类问题&#xff0c;即类别数 C大于2 的分类问题。Softmax回归就是Log…...

Maven/Gradle的讲解

一、为什么需要构建工具&#xff1f; 在理解 Maven/Gradle 之前&#xff0c;先明确它们解决的问题&#xff1a; ​​依赖管理​​&#xff1a;项目中可能需要引入第三方库&#xff08;如 Spring、JUnit 等&#xff09;&#xff0c;手动下载和管理这些库的版本非常麻烦。​​标…...

常见的HR面问题汇总

⚠️注意&#xff1a;以下仅是个人对问题的参考&#xff0c;具体情况视个人情况而定&#xff5e; 1. 你觉得你有哪些优点和缺点&#xff1f; 优点&#xff1a;学习能力强&#xff0c;遇到问题会主动思考和查找解决方案&#xff1b;有责任心&#xff0c;对待工作认真负责&#…...

把握数据治理关键,释放企业数据潜能

数据治理是对数据资产管理行使权力和控制的活动集合&#xff0c;以下是关于它的详细介绍&#xff1a; 一、定义 数据治理是指从使用零散数据变为使用统一主数据、从具有很少或没有组织和流程治理到企业范围内的综合数据治理、从尝试处理主数据混乱状况到主数据井井有条的一个…...

优化 Web 性能:处理非合成动画(Non-Composited Animations)

在 Web 开发中&#xff0c;动画能够增强用户体验&#xff0c;但低效的动画实现可能导致性能问题。Google 的 Lighthouse 工具在性能审计中特别关注“非合成动画”&#xff08;Non-Composited Animations&#xff09;&#xff0c;指出这些动画可能增加主线程负担&#xff0c;影响…...

房地产之后:探寻可持续扩张的产业与 GDP 新思

在经济发展的长河中,房地产长期占据着支柱产业的重要地位。其之所以能担当此重任,根源在于它深度嵌入了人们的生活与经济体系。住房,作为人类最基本的需求之一,具有不可替代的刚性。与其他现买按需生产的产业不同,房地产有着独特的消费逻辑。人们为了拥有一个稳定的居住之…...

Chapter02_数字图像处理基础

文章目录 图像的表示⭐模拟图像→数字图像均匀采样和量化均匀采样均匀量化 非均匀采样和量化 数字图像的表示二值图像灰度图像彩色图像 ⭐空间分辨率和灰度分辨率空间分辨率灰度分辨率 ⭐图像视觉效果影响因素采样数变化对图像视觉效果的影响空间分辨率变化对图像视觉效果的影响…...

【Android】UI开发:XML布局与Jetpack Compose的全面对比指南

随着Google推出Jetpack Compose这一现代化工具&#xff0c;我们面临一个关键选择&#xff1a;继续使用传统的XML布局&#xff0c;还是转向Compose&#xff1f; 一、语法对比&#xff1a;两种不同的构建方式 1. XML布局&#xff1a;基于标签的静态结构 XML通过嵌套标签定义UI元…...

浙大:LLM具身推理引擎Embodied-Reasoner

&#x1f4d6;标题&#xff1a;Embodied-Reasoner: Synergizing Visual Search, Reasoning, and Action for Embodied Interactive Tasks &#x1f310;来源&#xff1a;arXiv, 2503.21696 &#x1f31f;摘要 &#x1f538;深度思维模型的最新进展已经证明了数学和编码任务的…...

form+ffmpeg+opus录音压缩音频

说明&#xff1a; formffmpegopus录音压缩音频 效果图&#xff1a; step1:opus格式录音 C:\Users\wangrusheng\RiderProjects\WinFormsApp11\WinFormsApp11\Form1.cs using System; using System.Diagnostics; using System.IO; using System.Windows.Forms;namespace WinFo…...

win10 笔记本电脑安装 pytorch+cuda+gpu 大模型开发环境过程记录

win10 笔记本电脑安装 pytorchcudagpu 大模型开发环境过程记录 文章部分内容参考 deepseek。 以下使用命令行工具 mingw64。 安装 Anaconda 安装位置&#xff1a; /c/DEVPACK/Anaconda3 然后安装 Python 3.10.16 &#xff08;略&#xff09; $ conda create -n pytorch_…...

LeetCode 2442:统计反转后的不同整数数量

目录 核心思想&#xff1a;数字的“拆分”与“重组” 分步拆解&#xff08;以输入 123 为例&#xff09; 关键操作详解 为什么能处理中间或末尾的0&#xff1f; 数学本质 总结 题目描述 解题思路 代码实现 代码解析 复杂度分析 示例演示 总结 核心思想&#xff1a;…...

获取inode的完整路径包含挂载的路径

一、背景 在之前的博客 缺页异常导致的iowait打印出相关文件的绝对路径-CSDN博客 里的 2.2.3 一节和 关于inode&#xff0c;dentry结合软链接及硬链接的实验-CSDN博客 里&#xff0c;我们讲到了在内核里通过inode获取inode对应的绝对路径的方法。对于根目录下的文件而言&#…...

解决上传PDF、视频、音频等格式文件到FTP站点时报错“将文件复制到FTP服务器时发生错误。请检查是否有权限将文件放到该服务器上”问题

一、问题描述 可以将文本文件(.txt格式),图像文件(.jpg、.png等格式)上传到我们的FTP服务器上;但是上传一些PDF文件、视频等文件时就会报错“ 将文件复制到FTP服务器时发生错误。请检查是否有权限将文件放到该服务器上。 详细信息: 200 Type set to l. 227 Entering Pas…...

git push

在 git push 命令中&#xff0c;分支名称的顺序和含义非常重要。其基本格式如下&#xff1a; git push <remote> <local_branch>:<remote_branch>各部分解释 <remote>&#xff1a;远程仓库的名称&#xff08;如 origin&#xff09;。<local_branc…...

Java中的四大引用类型详解

Java中的四大引用类型详解&#xff1a;强引用、软引用、弱引用、虚引用 1. 引用类型概览 Java提供了四种不同强度的引用类型&#xff0c;用于控制对象的生命周期和垃圾回收行为&#xff1a; 引用类型回收时机典型应用场景是否影响GC强引用永不回收&#xff08;除非断开引用&…...

MySQL慢查询日志通俗指南

&#x1f340; 前言 如果你发现自己新写或者重写的接口查询速度变慢&#xff0c;你怎么定位原因呢&#xff1f;可以用explain分析我们的SQL原生代码&#xff0c;又或者可以考虑使用MySQL慢查询日志。这篇文章主要讲述什么是慢查询日志以及开发中可能用到的场景。 但是&#x…...

Kafka 如何保证消息可靠性?

Kafka 保证消息可靠性主要通过以下几个机制来实现&#xff0c;从生产者到消费者的整个链路上都设计了相应的保障措施&#xff1a; 1. 生产者&#xff08;Producer&#xff09;端的可靠性 ✅ a. acks 参数&#xff08;确认机制&#xff09; acks0&#xff1a;生产者不等待任何…...

【嵌入式系统设计师】知识点:第2章 嵌入式系统硬件基础知识

提示:“软考通关秘籍” 专栏围绕软考展开,全面涵盖了如嵌入式系统设计师、数据库系统工程师、信息系统管理工程师等多个软考方向的知识点。从计算机体系结构、存储系统等基础知识,到程序语言概述、算法、数据库技术(包括关系数据库、非关系型数据库、SQL 语言、数据仓库等)…...

C++重载运算符的本质

C 中运算符重载的本质就是函数调用&#xff0c;编译器会将运算符表达式转换为对特定函数的直接调用。以下是具体原理和实现细节&#xff1a; 1. 运算符重载的底层实现 当重载一个运算符&#xff08;如 、、<<&#xff09;时&#xff0c;实际上是在定义一个特殊名称的函数…...

Python解决“数字插入”问题

Python解决“数字插入”问题 问题描述测试样例解题思路代码 问题描述 小U手中有两个数字 a 和 b。第一个数字是一个任意的正整数&#xff0c;而第二个数字是一个非负整数。她的任务是将第二个数字 b 插入到第一个数字 a 的某个位置&#xff0c;以形成一个最大的可能数字。 你…...

深入讲解:智能合约中的读写方法

前言 在探秘区块链开发:智能合约在 DApp 中的地位及与传统开发差异一文中我提到对于智能合约中所有的写入其实都算是交易。而在一个完整的智能合约代码中最大的两个组成部分就是读取和写入。 本文将为你深入探讨该两者方法之间的区别。 写方法 写方法其实就是对区块链这一…...

Java进阶之旅-day05:网络编程

引言 在当今数字化的时代&#xff0c;网络编程在软件开发中扮演着至关重要的角色。Java 作为一门广泛应用的编程语言&#xff0c;提供了强大的网络编程能力。今天&#xff0c;我们深入学习了 Java 网络编程的基础知识&#xff0c;包括基本的通信架构、网络编程三要素、IP 地址、…...

Eliet Chat开发日志:信令服务器注册与通信过程

目录 1. 架构设计&#xff1a;信令服务器与客户端 2. 选择技术栈 3. 实现信令服务器 4. 客户端实现 5. 测试 6. 下一步计划 日期&#xff1a;2025年4月5日 今天的工作重点是实现两个设备通过信令服务器注册并请求对方公网地址信息&#xff0c;以便能够进行点对点通信。我…...

如何设计一个本地缓存

想获取更多高质量的Java技术文章&#xff1f;欢迎访问Java技术小馆官网&#xff0c;持续更新优质内容&#xff0c;助力技术成长 Java技术小馆官网https://www.yuque.com/jtostring 如何设计一个本地缓存 随着系统的复杂性和数据量的增加&#xff0c;如何快速响应用户请求、减…...