Python文件操作(六)

简介: Python文件操作(六)

文件基础操作

一.文件编码

编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。

  • 思考:计算机只能识别0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢?
  • 答案:使用编码技术(密码本)将内容翻译成0和1存入。

  • 计算机中有许多可用编码:UTF-8,GBK,Big5等不同的编码,将内容翻译成二进制也是不同的
  • 对内容的编码与解码必须使用同一套编码,否则会导致错误的结果

  • UTF-8是目前全球通用的编码格式,除非有特殊需求,否则,一律以UTF-8格式进行文件编码即可。

二.文件操作

在日常生活中,文件操作主要包括打开、关闭、读、写等操作

(1) 文件的打开

  • 操作过程中请务必注意文件路径的书写
  • 只有操作文件与python文件在同一目录才能直接写文件名。
  • 新手建议都写文件的绝对路径,不易导致错误发生。

(1.1) 基本格式

  • 在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
  • 基本语法:
open(name, mode, encoding)
# name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
# mode:设置打开文件的模式(访问模式):只读、写入、追加等。
# encoding:编码格式(推荐使用UTF-8)
  • 示例代码:
f = open("C:/code/bill.txt", "r", encoding="UTF-8")
# encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定
# f是open函数的文件对象,可以使用对象.属性或对象.方法对其进行访问

(1.2) 打开模式

  • 文件常用的三种基础访问模式,可通过mode指定。
  • r->read(读取),w->write(写入),a->append(追加)

模式

描述

r

只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

w

打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果该文件不存在,创建新文件。

a

打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。  如果该文件不存在,创建新文件进行写入。

(2) 文件的读取

操作

功能

文件对象.read(num)

读取指定长度字节  不指定num读取文件全部

文件对象.readline()

读取一行

文件对象.readlines()

读取全部行,返回列表

for line in 文件对象

for循环文件行,一次循环得到一行数据

文件对象.close()

关闭文件对象

with open() as f

通过with  open语法打开文件,可以自动关闭

  • 每次读取会从上一次读取结束的位置开始
  • 每次open()中的内容只能被读取一次

(2.1) read方法

  • num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
  • 语法:文件对象.read(num)
  • 使用示例:
f = open("C:/code/test.txt", "r", encoding="UTF-8")
content = f.read() # 不传入num,读取文件中所有的数据。
print(content)
# 打印
# 观止
# study
f = open("C:/code/test.txt", "r", encoding="UTF-8")
content = f.read(2) # 传入num,读取2字节长度数据。
print(content)
# 打印
# 观止

(2.2) readline()方法

  • 一次读取一行内容
  • 语法:文件对象.readline()
  • 使用示例:
f = open("C:/code/test.txt", "r", encoding="UTF-8")
content = f.readline()
print(f"第一行内容:{content}")  # 打印 第一行内容:观止
content = f.readline()
print(f"第二行内容:{content}")  # 打印 第二行内容:study

(2.3) readlines方法

  • 按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
  • 语法:文件对象.readlines()
  • 使用示例:
f = open("C:/code/test.txt", "r", encoding="UTF-8")
content = f.readlines()
print(content)  # 打印 ['观止\n', 'study']
print(type(content))  # 打印 <class 'list'>

(2.4) for循环读取

  • for循环读取每一行数据
  • 使用示例:
# 每一个line临时变量,就记录了文件的一行数据
for line in open("C:/code/test.txt", "r", encoding="UTF-8"):
    print(line)
# 打印
# 观止
#
# study

(2.5) close关闭文件对象

  • 如果不调用close,同时程序没有停止运行,那么这个文件将一直被Python程序占用,无法操作
  • 使用示例:
f = open("C:/code/test.txt", "r", encoding="UTF-8")
# 需要执行代码
f.close()
  • 代码中不关闭文件对象,且python程序未停止运行,无法对文件删除重命名等操作:

(2.6) 自动close

  • 通过在with open的语句块中对文件进行操作,可以在操作完成后自动关闭close文件
  • 即使出现异常也会自动调用关闭文件操作
  • 语法:with open() as f
  • 使用示例:
with open("C:/code/test.txt", "r", encoding="UTF-8") as f:
  f.readlines()

(3) 文件的写入

  • 使用示例:
f = open("C:/code/test.txt", "w")
# 文件如果不存在,使用”w”模式,会创建新文件
# 文件如果存在,使用”w”模式,会将原有内容清空
# 2.文件写入
f.write('hello world')
# 3. 内容刷新
f.flush()

  • 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
  • 当调用flush的时候,内容会真正写入文件
  • close()方法,附带flush()方法的功能
  • 这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)

(4) 文件的追加

  • 使用w模式,每次写入会将原有内容清空,写入新内容
  • 使用a模式,文件不存在会创建文件,文件存在会在最后追加内容写入文件
  • 使用示例:
f = open("C:/code/test.txt", "a")
# 2.文件写入
f.write('study')
# 3. 内容刷新
f.flush()

目录
相关文章
|
5月前
|
安全 Python
Python语言中常用的文件操作方法探讨
通过上述方法的结合使用,我们可以构筑出强大并且可靠的文件操作逻辑,切实解决日常编程中遇到的文件处理问题。
235 72
|
5月前
|
移动开发 安全 Linux
Python文件操作的"保险箱":with语句深度实战指南
本文深入解析Python中`with`语句的原理与高级应用,通过“保险箱”类比,形象展示资源管理机制。从上下文管理协议到实战场景,涵盖文件、数据库、网络等多种资源的高效安全处理方式,助你写出更优雅、可靠的代码。
147 1
|
6月前
|
缓存 数据库连接 数据库
Python文件操作的“保险箱”:with语句深度实战指南
本文深入探讨Python中with语句在文件操作中的应用及其优势。首先介绍其底层原理,基于上下文管理协议自动管理资源的获取与释放,避免手动关闭文件导致的资源泄漏问题。接着通过基础文件读写、异常处理进阶和复合资源管理等实战场景解析with语句的便捷性与安全性。同时,阐述如何自定义上下文管理器以满足特定需求,并分析其性能考量及优化策略。最后总结实战经验,强调优先使用内置管理器、明确异常处理以及保持代码可读性的重要性,助力开发者高效编写健壮的程序。
155 1
|
6月前
|
自然语言处理 安全 JavaScript
Python文件操作的“保险箱”:with语句深度实战指南
Python中的`with`语句是文件操作和资源管理的强大工具,如同一个智能保险箱,自动处理打开和关闭操作,避免手动管理可能引发的错误。它通过上下文管理协议(`__enter__`和`__exit__`方法)确保资源在使用后正确释放。无论是逐块读取大文件、同时读写文件,还是处理特殊编码文件,`with`语句都能简化代码并提高安全性。此外,自定义上下文管理器可扩展到数据库连接等场景,而常见错误如重复关闭文件或忽略异常也需注意。结合生成器表达式批量处理文件时,`with`语句仍能保持高效和安全。总之,`with`语句是资源管理的瑞士军刀,让复杂操作变得简单可靠。
155 1
|
6月前
|
数据采集 运维 BI
Python 文件操作进阶|使用 shutil 实现高效文件复制
在开发和运维中,处理大量文件是常见需求,如备份配置、归档日志或构建部署包。手动复制粘贴已无法满足高效需求!Python 的 `shutil` 模块提供了强大的文件操作功能,支持单文件复制、目录树迁移及自动化任务构建。本文详解 `shutil.copy()` 基础用法与进阶技巧,如批量复制、自动路径检测、时间戳命名备份等,助你实现高效自动化。结合实战案例(如自动备份系统),让你的代码更专业!学习后,欢迎交流心得,一起精进 Python 技能。关注我,获取更多编程技巧与源码分享!
|
监控 Java 数据处理
文件操作不再难!Python系统编程实战,带你轻松驾驭文件系统与I/O
【7月更文挑战第31天】在 Python 系统编程中, 文件操作与 I/O 管理至关重要。
168 2
|
存储 Python
Python文件操作(1)
【10月更文挑战第17天】
236 60
Python文件操作(1)
|
数据采集 存储 Python
Python文件操作2
【10月更文挑战第18天】
109 2
Python文件操作2
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
本文介绍了Python中的文件操作方法,包括使用open()打开文件、close()关闭文件、read()读取内容、readline()读取单行、readlines()读取多行、write()写入内容以及writelines()写入多行的方法。同时,探讨了文件操作模式和编码问题,并扩展了上下文管理器with...as的使用,以及对图片和音频文件操作的思考和练习。
150 1
Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
|
存储 Python
Python文件操作
Python文件操作

推荐镜像

更多