前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python全网最全基础课程笔记(十五)--Python文件操作太简单?你可能忽略了这些关键技巧!

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

作者头像
小白的大数据之旅
发布2024-11-20 18:36:02
发布2024-11-20 18:36:02
13300
代码可运行
举报
运行总次数:0
代码可运行

文件是什么?

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

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

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函数可以打开一个文件,并返回一个文件对象。基本语法如下:

代码语言:javascript
代码运行次数:0
运行
复制
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,则读取大约那么多字节的内容。
代码语言:javascript
代码运行次数:0
运行
复制
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

写入文件

  • write(string):将字符串写入文件。
  • writelines(lines):将字符串列表写入文件。不会自动添加换行符,需要手动添加。
代码语言:javascript
代码运行次数:0
运行
复制
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():刷新内部缓冲区,将缓冲的数据立即写入文件。
代码语言:javascript
代码运行次数:0
运行
复制
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语句,这样文件会在块结束时自动关闭。

代码语言:javascript
代码运行次数:0
运行
复制
with open('example.txt', 'r') as file:
    content = file.read()
# 文件在这里会自动关闭

二进制文件的操作

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

代码语言:javascript
代码运行次数:0
运行
复制
# 写入二进制文件
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模块:提供了面向对象的路径操作方法。
代码语言:javascript
代码运行次数:0
运行
复制
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:

代码语言:javascript
代码运行次数:0
运行
复制
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)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件是什么?
    • IO操作文件步骤
  • 文件类型
    • 纯文本编码格式文件
    • 二进制文件
    • 文件操作和模式
    • 文件的读写模式
    • 文件的操作
  • 打开文件
  • 文件对象的常用方法
    • 读取文件
    • 写入文件
    • 文件指针操作
    • 关闭文件
  • 二进制文件的操作
  • 使用os和pathlib模块进行文件和目录操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档