Python文件操作

 目录

open方法 

其中mode(模式) 参数的模式总结表格

示例

with(上下文管理器) 

读取文件内容

读取整个文件内容

逐行读取文件内容

使用 readline 方法逐行读取 

使用 readlines 方法读取所有行 

写入文件内容

覆盖原内容写入

追加内容到文件末尾

文件指针操作 

获取文件指针位置 

移动文件指针

seek() 方法参数

使用 truncate() 截断文件


open方法 

open 函数在 Python 中用于打开一个文件,返回一个文件对象。其基本语法格式如下:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

其中,各个参数的含义如下:

  • file: 要打开的文件的路径,字符串类型。
  • mode: 文件打开模式,默认为 'r'(只读)。常用的模式包括:
    • 'r': 只读(默认)。
    • 'w': 只写。如果文件存在,先清空文件;如果文件不存在,创建新文件。
    • 'a': 追加。如果文件存在,将内容写入文件末尾;如果文件不存在,创建新文件。
    • 'b': 以二进制模式打开文件(与其他模式结合使用,如 'rb''wb')。
    • 't': 以文本模式打开文件(默认,与其他模式结合使用,如 'rt''wt')。
    • '+': 打开文件进行更新(读写)(与其他模式结合使用,如 'r+''w+''a+')。
  • buffering: 设置缓冲策略。0 表示不缓冲,1 表示行缓冲,正整数表示使用一个固定大小的缓冲区(单位是字节),负数表示使用系统默认的缓冲策略。
  • encoding: 打开文件时使用的编码类型,默认是 None。
  • errors: 设置错误处理方式,默认是 None。
  • newline: 用于区分换行符,默认是 None。
  • closefd: 如果为 False,文件描述符将保持打开状态。
  • opener: 自定义打开器,可以是一个自定义函数。

其中mode(模式) 参数的模式总结表格

 

模式描述文件存在文件不存在
'r'以只读模式打开文本文件打开报错
'w'以写入模式打开文本文件清空创建新文件
'a'以追加模式打开文本文件追加创建新文件
'b'以二进制模式打开文件N/AN/A
't'以文本模式打开文件(默认)N/AN/A
'x'以排它性创建模式打开文件报错创建新文件
'r+'以读写模式打开文本文件打开报错
'w+'以读写模式打开文本文件清空创建新文件
'a+'以读写模式打开文本文件追加创建新文件
'rb'以二进制只读模式打开文件打开报错
'wb'以二进制写入模式打开文件清空创建新文件
'ab'以二进制追加模式打开文件追加创建新文件
'xb'以二进制排它性创建模式打开文件报错创建新文件
'r+b'以二进制读写模式打开文件打开报错
'w+b'以二进制读写模式打开文件清空创建新文件
'a+b'以二进制读写模式打开文件追加创建新文件

注:

  • 'b''t' 不能单独使用,通常与其他模式组合使用。
  • 'x' 模式用于创建文件,如果文件已存在则会报错。
  • '+' 模式用于同时进行读和写操作。
  • 使用 'rb''wb''ab''xb''r+b''w+b''a+b' 时文件将以二进制模式打开,可以读取或写入二进制数据。

 

模式rr+ww+aa+
++++
+++++
创建++++
覆盖++
指针在开始++++
指针在结尾++

示例

打开和关闭文件

# 打开文件
file = open('filename.txt', 'r')  # 打开文件以供读取 ('r'),也可以用 'w' 写入模式或 'a' 追加模式
# 文件操作
content = file.read()  # 读取文件内容
file.close()  # 关闭文件

with(上下文管理器) 

上下文管理器是Python中的一种管理资源的方式,确保资源在使用后能够自动释放。在文件操作中,常见的上下文管理器是使用 with 语句来打开和关闭文件。这种方式不仅简洁,还能自动处理文件关闭,即使在发生异常时也能确保文件正确关闭。 

 基本语法格式

with context_expression [as target]:
    with-body

其中:

context_expression 是一个返回上下文管理器对象的表达式,例如 open(file, mode)。
[as target] 是可选部分,用于将上下文管理器的返回值赋给变量(即 target)。
with-body 是一个缩进的代码块,在上下文管理器的管理范围内执行。

 

读取文件内容

 

读取整个文件内容
with open('filename.txt', 'r') as file:
    content = file.read()
    print(content)

逐行读取文件内容
with open('filename.txt', 'r') as file:
    for line in file:
        print(line.strip())  # 使用strip()去除行尾的换行符
使用 readline 方法逐行读取 
with open('example.txt', 'r', encoding='utf-8') as file:
    while True:
        line = file.readline()
        if not line:
            break
        print(line, end='')

使用 readlines 方法读取所有行 
with open('example.txt', 'r', encoding='utf-8') as file:
    lines = file.readlines()
    for line in lines:
        print(line, end='')

 

写入文件内容

 

覆盖原内容写入
with open('filename.txt', 'w') as file:
    file.write('Hello, World!')

追加内容到文件末尾
with open('filename.txt', 'a') as file:
    file.write('\nAppending new line.')

 

文件指针操作 

获取文件指针位置 

使用 tell() 方法获取当前文件指针的位置

with open('example.txt', 'r', encoding='utf-8') as file:
    position = file.tell()
    print(f"Current file pointer position: {position}")
移动文件指针

使用 seek() 方法移动文件指针:

with open('example.txt', 'r', encoding='utf-8') as file:
    file.seek(5)  # 将文件指针移动到偏移量 5 的位置
    position = file.tell()
    print(f"File pointer moved to position: {position}")

seek() 方法参数

seek(offset, whence=0)

  • offset:相对于 whence 的偏移量,单位是字节。
  • whence:参考位置(默认值为 0),可选值:
    • 0:文件开头(默认)
    • 1:当前文件指针位置
    • 2:文件末尾

 

使用 truncate() 截断文件

 

语法:

file.truncate(size=None)
参数:
size:指定截断的文件大小(以字节为单位)。如果未提供 size,则从当前文件指针位置开始截断,默认截断到文件的当前指针位置。

功能:

  • 缩小文件:通过 truncate() 函数,可以将文件的大小调整为指定的大小,删除超出部分的数据。
  • 扩大文件:如果指定的大小大于文件当前大小,文件将被填充到指定大小。通常,这种填充不会自动完成,而是需要在写入新数据时进行。
with open('example.txt', 'r+', encoding='utf-8') as file:
    file.write("Hello, World!\nThis is a test file.\nEnjoy reading!")
    file.seek(0)
    print("Original file content:")
    print(file.read())

    file.seek(0)
    file.truncate(13)  # 截断文件到 13 字节
    file.seek(0)
    print("\n截断后的文件内容是:")
    print(file.read())
'''
输出:
Original file content:
Hello, World!
This is a test file.
Enjoy reading!

截断后的文件内容是:
Hello, World!
'''

 

#二进制截断:
with open('example.bin', 'wb') as file:
    file.write(b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A')

with open('example.bin', 'r+b') as file:
    file.seek(4)
    file.truncate()  # 从当前位置截断文件
    file.seek(0)
    print("Binary file content after truncation:", file.read())
'''
输出:
Binary file content after truncation: b'\x01\x02\x03\x04'
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZDICT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值