Python 文件处理指南:打开、读取、写入、追加、创建和删除文件
文件处理是任何Web应用程序的重要部分。Python有多个用于创建、读取、更新和删除文件的函数。
文件处理
在Python中处理文件的关键函数是open()函数。open()函数接受两个参数:文件名和模式。
有四种不同的方法(模式)可以打开文件:
- “r” - 读取 - 默认值。打开一个文件以进行读取,如果文件不存在则报错。
- “a” - 追加 - 打开一个文件以进行追加,如果文件不存在则创建文件。
- “w” - 写入 - 打开一个文件以进行写入,如果文件不存在则创建文件。
- “x” - 创建 - 创建指定的文件,如果文件存在则返回错误。
此外,您可以指定文件是二进制模式还是文本模式:
- “t” - 文本 - 默认值。文本模式。
- “b” - 二进制 - 二进制模式(例如,图像)。
语法
要打开一个文件进行读取,只需指定文件的名称:
f = open("demofile.txt")
上述代码与以下代码等效:
f = open("demofile.txt", "rt")
因为"r"表示读取,"t"表示文本,它们是默认值,您不需要指定它们。
打开服务器上的文件
假设我们有以下文件,位于与Python相同的文件夹中:
demofile.txt
Hello! Welcome to demofile.txt
This file is for testing purposes.
Good Luck!
要打开该文件,使用内置的open()函数。
open()函数返回一个文件对象,该对象具有用于读取文件内容的read()方法:
f = open("demofile.txt", "r")
print(f.read())
如果文件位于不同的位置,您将不得不指定文件路径,如下所示:
f = open("D:\\myfiles\\welcome.txt", "r")
print(f.read())
只读取文件的一部分
默认情况下,read()方法返回整个文本,但您也可以指定要返回多少个字符:
f = open("demofile.txt", "r")
print(f.read(5))
读取行
您可以使用readline()方法返回一行:
f = open("demofile.txt", "r")
print(f.readline())
通过调用readline()两次,您可以读取前两行:
f = open("demofile.txt", "r")
print(f.readline())
print(f.readline())
通过循环遍历文件的各行,您可以一行一行地读取整个文件:
f = open("demofile.txt", "r")
for x in f:print(x)
关闭文件
最佳实践是在使用完文件后始终关闭它。
f = open("demofile.txt", "r")
print(f.readline())
f.close()
写入现有文件
要写入现有文件,您必须向open()函数添加一个参数:
- “a” - 追加 - 将追加到文件的末尾。
- “w” - 写入 - 将覆盖任何现有内容。
f = open("demofile2.txt", "a")
f.write("Now the file has more content!")
f.close()
要检查文件是否位于不同的位置,您将不得不指定文件路径,如下所示:
f = open("demofile3.txt", "w")
f.write("Woops! I have deleted the content!")
f.close()
注意:使用"w"方法将覆盖整个文件。
创建新文件
要在Python中创建新文件,请使用open()方法,使用以下参数之一:
- “x” - 创建 - 如果文件存在则返回错误。
- “a” - 追加 - 如果指定的文件不存在,将创建文件。
- “w” - 写入 - 如果指定的文件不存在,将创建文件。
f = open("myfile.txt", "x")
结果:创建了一个新的空文件!
f = open("myfile.txt", "w")
删除文件
要删除文件,您必须导入OS模块,并运行其os.remove()函数:
import os
os.remove("demofile.txt")
检查文件是否存在:
为了避免出现错误,您可能希望在尝试删除文件之前检查文件是否存在:
import os
if os.path.exists("demofile.txt"):os.remove("demofile.txt")
else:print("The file does not exist")
删除文件夹
要删除整个文件夹,请使用os.rmdir()方法:
import os
os.rmdir("myfolder")
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
相关文章:
Python 文件处理指南:打开、读取、写入、追加、创建和删除文件
文件处理是任何Web应用程序的重要部分。Python有多个用于创建、读取、更新和删除文件的函数。 文件处理 在Python中处理文件的关键函数是open()函数。open()函数接受两个参数:文件名和模式。 有四种不同的方法(模式)可以打开文件࿱…...
记录C#导出数据慢的优化方法
Winform程序将数据库中的历史数据导出到Excel中速度慢,导出1000多条数据优化前需要40秒,优化后只需要2秒,4万条数据只需要10秒。 优化前: for (int i 0; i < myDGV.Columns.Count; i) {worksheet.Cells[1, i 1] myDGV.Col…...
Android批量加载图片OOM问题
Android批量加载图片OOM问题 前言使用内存缓存使用磁盘缓存处理配置更改 前言 将单个位图加载到界面中非常简单,但如果您需要同时加载较大的一组图片,则操作起来会比较复杂。实际上,在许多情况下(比如使用 ListView、GridView 或…...
SNAT与DNAT公私网地址转换
前言 SNAT和DNAT是两种重要的网络地址转换技术,它们允许内部网络中的多个主机共享单个公共IP地址,或者将公共IP地址映射到内部网络中的特定主机。这些技术在构建企业级网络和互联网应用程序时非常重要,因为它们可以帮助保护内部网络安全&…...
快速上手Spring Boot整合,开发出优雅可靠的Web应用!
SpringBoot 1,SpringBoot简介1.1 SpringBoot快速入门1.1.1 开发步骤1.1.1.1 创建新模块1.1.1.2 创建 Controller1.1.1.3 启动服务器1.1.1.4 进行测试 1.1.2 对比1.1.3 官网构建工程1.1.3.1 进入SpringBoot官网1.1.3.2 选择依赖1.1.3.3 生成工程 1.1.4 SpringBoot工程…...
MySQL高级特性篇(7)-数据库版本控制与迁移
MySQL数据库版本控制与迁移 在软件开发的过程中,数据库版本控制和迁移是非常重要的一部分。这些过程确保了数据库的结构及数据的追踪和更新。在本篇博客中,我们将介绍如何使用Markdown语法来编写MySQL数据库版本控制与迁移的相关内容。 1. 什么是MySQL…...
js判断对象是否为空
给定一个对象或数组,判断它是否为空。 一个空对象不包含任何键值对。 一个空数组不包含任何元素。 输入:obj {"a": 1, "b": 2} 输出:false 解释:这个对象有两个键值对,所以它不为空。var isObje…...
2024前端面试准备之HTML篇
全文链接 1. doctype的作用是什么 DOCTYPE是html5标准网页声明,且必须声明在HTML⽂档的第⼀⾏。来告知浏览器的解析器⽤什么⽂档标准解析这个⽂档,不同的渲染模式会影响到浏览器对于 CSS 代码甚⾄ JavaScript 脚本的解析 ⽂档解析类型有: BackCompat:怪异模式,浏览器使…...
devOps系列(八)efk+prometheus+grafana日志监控和告警
前言 作者目前打算分享一期关于devOps系列的文章,希望对热爱学习和探索的你有所帮助。 文章主要记录一些简洁、高效的运维部署指令,旨在 记录和能够快速地构建系统。就像运维文档或者手册一样,方便进行系统的重建、改造和优化。每篇文章独立…...
考研英语单词29
Day 29 unify v.统一,使成一体【union n.结合,联合,工会,团结 unity n.团结,统一,协调】 offend v.冒犯,使不愉快【offender n.冒犯者 offensive a.冒犯的,无礼的】 d…...
spring-security 过滤器
spring-security过滤器 版本信息过滤器配置过滤器配置相关类图过滤器加载过程创建 HttpSecurity Bean 对象创建过滤器 过滤器作用ExceptionTranslationFilter 自定义过滤器 本章介绍 spring-security 过滤器配置类 HttpSecurity,过滤器加载过程,自定义过…...
掌握这7种软件设计原则,让你的代码更优雅
掌握这7种软件设计原则,让你的代码更优雅 在软件开发过程中,设计原则是非常重要的指导方针,它们可以帮助我们创建出更加清晰、可维护和可扩展的软件系统。本文将介绍7种常见的软件设计原则,并解释它们如何提升代码质量。 1. 单…...
Flutter自定义tabbar任意样式
场景描述 最近在使用遇到几组需要自定义的tabbar或者类似组件,在百度查询资料中通常,需要自定义 TabIndicator extends Decoration 比如上图中的带圆角的指示器这样实现 就很麻烦, 搜出来的相关也是在此之处上自己画,主要再遇…...
Java设计模式【策略模式】
一、前言 1.1 背景 针对某种业务可能存在多种实现方式,传统方式是通过传统if…else…或者switch代码判断; 弊端: 代码可读性差扩展性差难以维护 1.2 简介 策略模式是一种行为型模式,它将对象和行为分开,将行为定…...
(13)Hive调优——动态分区导致的小文件问题
前言 动态分区指的是:分区的字段值是基于查询结果自动推断出来的,核心语法就是insertselect。 具体内容指路文章: https://blog.csdn.net/SHWAITME/article/details/136111924?spm1001.2014.3001.5501文章浏览阅读483次,点赞15次…...
【linux】使用g++调试内存泄露:AddressSanitizer
1、简介 AddressSanitizer(又名 ASan)是 C/C++ 的内存错误检测器。它可以用来检测: 释放后使用(悬空指针) 堆缓冲区溢出 堆栈缓冲区溢出 全局缓冲区溢出 在作用域之后使用 初始化顺序错误 内存泄漏这个工具非常快,只将被检测的程序速度减慢约2倍,而Valgrind将会是程序…...
第三百五十七回
文章目录 1. 概念介绍2. 使用方法2.1 List2.2 Map2.3 Set 3. 示例代码4. 内容总结 我们在上一章回中介绍了"convert包"相关的内容,本章回中将介绍collection.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的内容是col…...
新版Java面试专题视频教程——框架篇
新版Java面试专题视频教程——框架篇 框架篇 01-框架篇介绍02-Spring-单例bean是线程安全的吗03-Spring-AOP相关面试题04-Spring-事务失效的场景05-Spring-bean的生命周期5.1 BeanDefinition 06-Spring-bean的循环依赖(循环引用)6.1 一般对象的循环依…...
网络爬虫实战 | 上传以及下载处理后的文件
详细代码在文尾 以实现爬虫一个简单的(SimFIR (doctrp.top))网址为例,需要遵循几个步骤: 1. 分析网页结构 首先,需要分析该网页的结构,了解图片是如何存储和组织的。这通常涉及查看网页的HTML源代码,可能还包括CSS和JavaScript文件。检查图片URL的模式,看看是否有规律…...
Linux--shell编程中有关while循环的详细内容
文章关于while循环的内容目录 一、while循环 二、无限循环 三、case语句 四、跳出循环 五、break 六、continue 一、w…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
