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()

目录
相关文章
|
20天前
|
Python
Python文件操作学习应用案例详解
【4月更文挑战第7天】Python文件操作包括打开、读取、写入和关闭文件。使用`open()`函数以指定模式(如'r'、'w'、'a'或'r+')打开文件,然后用`read()`读取全部内容,`readline()`逐行读取,`write()`写入字符串。最后,别忘了用`close()`关闭文件,确保资源释放。
18 1
|
1月前
|
Unix Linux 测试技术
Python超详细基础文件操作(详解版)(下)
Python超详细基础文件操作(详解版)
|
1月前
|
存储 JSON 数据库
Python超详细基础文件操作(详解版)(上)
Python超详细基础文件操作(详解版)
|
1月前
|
Python
Python文件操作功能
Python文件操作功能
24 1
|
3月前
|
Python
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱-2
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱-2
|
3月前
|
Java Python
在Python中,进行文件操作
在Python中,进行文件操作
17 2
|
1月前
|
存储 安全 API
【Python 基础教程 21】Python3 文件操作全面指南:从入门到精通的综合教程
【Python 基础教程 21】Python3 文件操作全面指南:从入门到精通的综合教程
82 0
|
30天前
|
Python JSON 数据格式
08 Python之文件操作
08 Python之文件操作
45 0
|
1月前
|
存储 Java 程序员
【python】—— 文件操作
【python】—— 文件操作
|
1月前
|
缓存 数据安全/隐私保护 Python
Python快速入门:类、文件操作、正则表达式
Python快速入门:类、文件操作、正则表达式