0
点赞
收藏
分享

微信扫一扫

Python全网最全基础课程笔记(十五)--Python文件操作太简单?你可能忽略了这些关键技巧!

Python的文件和IO操作,简直是编程界的“瑞士军刀”,是每个Pythoner必须掌握的看家本领!从文件的打开、读写、关闭,到各种IO流的灵活运用,无一不彰显着Python的强大与灵活。学会了这些,你就能轻松驾驭数据,让文件读写变得像呼吸一样自然。别小看这些基础操作,它们可是构建复杂程序的基石。掌握了它们,你就能在编程的世界里游刃有余,轻松应对各种挑战!怎么样,是不是已经迫不及待想要一展身手了?那就赶快行动起来吧!

欢迎大家加入下面,一起交流学习 公主号:小白的大数据之旅

本文知识点思维导图

在这里插入图片描述

文件是什么?

开始之前,我们先来了解一下文件是什么。

文件是以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。计算机文件基本上分为二种:二进制文件(没有统一的字符编码)和纯文本文件(有统一的编码,可以被看做存储在磁盘上的长字符串)。

IO操作文件步骤

在这里插入图片描述

文件类型

那么文件类型都有哪些呢

纯文本编码格式文件

  • 定义:纯文本文件是以文本形式存储的文件,其中包含了人类可读的字符。
  • 编码格式:常见的编码格式有ASCIIISO-8859-1GB2312GBKUTF-8UTF-16 等。在Python中,通常使用UTF-8编码来处理文本文件,因为它支持多种语言的字符集。
  • 特点:易于阅读和编辑,适用于存储文本数据,如程序代码、文章、日志等。

二进制文件

  • 定义:二进制文件是以二进制形式存储的文件,其中包含了机器可读的字节序列。
  • 特点:无法直接通过文本编辑器查看其内容,适用于存储非文本数据,如图片音频视频可执行文件等。
  • 处理:在Python中,使用二进制模式(如'rb'、'wb')来打开和处理二进制文件。

文件操作和模式

文件的读写模式

mode 解释
r 只读【默认模式,文件必须存在,不存在则抛出异常】
w 只写,写之前会清空文件的内容,如果文件不存在,会创建新文件
a 追加的方式,在原本内容中继续写,如果文件不存在,则会创建新文件
r+ 可读可写
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb 二进制只读,与r类似,但用于二进制文件
wb 二进制只写,与w类似,但用于二进制文件
ab 二进制追加,与a类似,但用于二进制文件
rb+ 二进制可读可写,与r+类似,但用于二进制文件
wb+ 二进制打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件(与w+类似,但用于二进制文件)
ab+ 二进制打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写(与a+类似,但用于二进制文件)

文件的操作

操作类型 方法/函数 描述 示例
打开文件 open(file, mode='r', ...) 返回文件对象,用于读取或写入文件 file = open('example.txt', 'r')
读取文件内容 read(size=-1) 读取整个文件内容 content = file.read()
readline(size=-1) 读取一行内容 line = file.readline()
readlines(hint=-1) 读取所有行并返回一个列表 lines = file.readlines()
写入文件内容 write(string) 将字符串写入文件 file.write('Hello, World!\n')
关闭文件 close() 关闭文件,释放资源 file.close()
文件指针操作 seek(offset, whence=0) 移动文件指针到指定位置 file.seek(0)
tell() 返回文件指针当前位置 position = file.tell()
上下文管理 with open(...) as file 使用上下文管理器自动管理文件打开和关闭 with open('example.txt', 'r') as file: ...
二进制模式 open(file, 'rb') 以二进制读模式打开文件 with open('image.png', 'rb') as file: ...
open(file, 'wb') 以二进制写模式打开文件 with open('output.bin', 'wb') as file: ...

打开文件

使用open函数可以打开一个文件,并返回一个文件对象。基本语法如下:

file_object = open(file_path, mode='r', encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file_path:文件路径,可以是相对路径或绝对路径。
  • mode:模式字符串,决定了文件是以什么方式打开的。常用的模式有:
  • 'r':只读模式(默认)。
  • 'w':写入模式,会覆盖文件内容。
  • 'a':追加模式,在文件末尾添加内容。
  • 'b':二进制模式,可以与其他模式组合使用,如'rb'、'wb'等。
  • '+':更新模式,可以读取和写入,如'r+'、'w+'、'a+'。
  • encoding:指定文件的编码方式,默认为None(系统默认编码,通常是UTF-8)。
  • errors:指定如何处理编码和解码错误。
  • newline:控制换行符的行为。
  • closefd:如果为False,则文件描述符不会关闭。
  • opener:一个自定义的开文件器,通常不使用。

文件对象的常用方法

文件对象提供了多种方法来读取、写入和操作文件。

读取文件

  • read(size=-1):读取整个文件内容,如果指定size,则读取指定数量的字符。
  • readline(size=-1):读取一行内容,如果指定size,则读取指定数量的字符或到行结束。
  • readlines(hint=-1):读取文件中的所有行,并返回一个包含每行作为元素的列表。如果指定hint,则读取大约那么多字节的内容。
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

写入文件

  • write(string):将字符串写入文件。
  • writelines(lines):将字符串列表写入文件。不会自动添加换行符,需要手动添加。
with open('example.txt', 'w') as file:
    file.write('Hello, World!\n')
    file.writelines(['This is a line.\n', 'This is another line.\n'])

文件指针操作

  • seek(offset, whence=0):改变当前文件操作指针的位置。whence可以是0(文件开头)、1(当前位置)、2(文件末尾)。
  • tell():返回当前文件操作指针的位置。
  • flush():刷新内部缓冲区,将缓冲的数据立即写入文件。
with open('example.txt', 'r+') as file:
    content = file.read(5)  # 读取前5个字符
    print(content)
    file.seek(0)  # 将文件指针移回文件开头
    file.write('Hi ')  # 覆盖前5个字符
    file.flush()  # 刷新缓冲区,确保数据写入文件

关闭文件

文件对象可以使用close()方法手动关闭,但更好的方式是使用with语句,这样文件会在块结束时自动关闭。

with open('example.txt', 'r') as file:
    content = file.read()
# 文件在这里会自动关闭

二进制文件的操作

对于二进制文件,使用'rb'、'wb'等模式打开文件。

# 写入二进制文件
with open('example.bin', 'wb') as file:
    file.write(b'\x00\x01\x02\x03\x04')

# 读取二进制文件
with open('example.bin', 'rb') as file:
    content = file.read()
    print(content)  # 输出: b'\x00\x01\x02\x03\x04'

使用os和pathlib模块进行文件和目录操作

Python还提供了os和pathlib模块来进行文件和目录的操作,如创建目录、删除文件、重命名文件等。

  • os模块:提供了许多与操作系统交互的函数。
  • pathlib模块:提供了面向对象的路径操作方法。
import os

# 创建目录
os.makedirs('new_directory', exist_ok=True)

# 删除文件
os.remove('example.txt')

# 重命名文件
os.rename('old_name.txt', 'new_name.txt')

# 列出目录内容
print(os.listdir('.'))

使用pathlib:

from pathlib import Path

# 创建路径对象
path = Path('example.txt')

# 检查文件是否存在
if path.exists():
    print('File exists.')

# 创建目录
Path('new_directory').mkdir(parents=True, exist_ok=True)

# 读取文件内容
content = path.read_text()
print(content)

在这里插入图片描述

举报

相关推荐

0 条评论