【Python】文件操作


打开文件

在Python中,可以使用open()函数来打开文件,这个函数返回一个文件对象。

基本语法是:f = open(file, mode='r', encoding=None)

其中f是文件句柄,为自定义的标识符,可以通过它来对文件进行读取、写入、关闭等操作。

常用参数解释:

  • file: 要打开的文件名或路径。

  • mode: 打开文件的模式,默认为**'r'**即只读模式。其他模式包括:

    • 'r':只读模式。
    • 'w':写入模式,会覆盖已存在的文件。
    • 'a':追加模式,写入到文件的末尾。
    • 'b':二进制模式,用于非文本文件。
    • '+':更新模式,用于读取和写入。
  • encoding: 文本文件的编码格式,如'utf-8'

  • 常用的打开模式组合方法

    读写模式(r+):

    • 允许对文件进行读取和写入操作。
    • 写入时不会清空文件,可以在读取后的任何位置开始写入。

    写读模式w+):

    • 允许写入和读取。
    • 如果文件已存在,会先清空文件(即截断为零长度),然后开始写入。
    • 可以在写入后读取文件的内容,通常用于先重写一个文件然后再读取它。

    追加读模式(a+):

    • 允许写入和读取。
    • 写操作会追加到文件的末尾,不管文件指针当前位置在哪。
    • 即使文件指针移动到文件中间,写入操作仍然会追加到文件末尾。
    • 文件不存在时将创建新文件。

    二进制组合模式(如rb+, wb+, ab+):

    • 结合了二进制模式与其他模式的特点,用于非文本文件的读写。
    • rb+:二进制读写,不截断文件,文件必须存在。
    • wb+:二进制写读,截断文件,文件内容被清空后开始写入。
    • ab+:二进制追加读,写操作总是追加到文件末尾。

关闭文件

在Python中,使用close()函数,通过文件句柄,即可关闭指定文件。

关闭文件:f.close() # 关闭文件句柄f指向的文件

文件上下文管理器

# 使用with自动管理文件打开和关闭
# as 可以重命名
# 等价为file = open('example.txt', 'r')   ...  file.close()
with open('example.txt', 'r') as file:  

仅对with的简单使用做介绍,不做深入研究

读取文件

文件对象提供了几种方法来读取内容,包括read(), readline()readlines()

# 使用函数read()读取整个文件
with open('example.txt', 'r', encoding="utf-8") as file:
    print(file.read())
# 逐行读取文件
with open('example.txt', 'r', encoding="utf-8") as file:
    for line in file:
        print(line, end="")
        
# 使用函数readline()逐行读取文件
with open('test.py', 'r', encoding="utf-8") as file:
    line = file.readline()
    while line:
        print(line, end="")
        line = file.readline()
# 使用函数readlines()读取所有行到一个列表中
with open('example.txt', 'r', encoding="utf-8") as file:
    lines = file.readlines()
    print(lines)

写入文件

写入文件通常使用write()方法,对于多个数据可以使用writelines()

# 写入字符串到文件
with open('output.txt', 'w') as file:
    file.write('Python is awesome.\n')

# 写入多个数据到文件
lines = ['First line\n', 'Second line\n']
with open('output.txt', 'a') as file:
    file.writelines(lines)

为了更好的理解上述的内容,我编写了一个批量重命名文件或文件夹的程序。

"""
Time:2024-05-26
Function:批量重命名指定文件夹下的文件或文件夹
Python:Python 3.9.16
"""

import os

def rename_files_in_directory(directory):
    # 检查目录是否存在
    if not os.path.exists(directory):
        print(f"文件夹 {directory} 不存在.")
        return

    # 尝试列出并重命名文件
    try:
        for filename in os.listdir(directory):
            print(f"文件:{filename} (c 跳过 q 退出 其他则为重命名)")
            oper = input("重命名为:")

            if oper == 'c' or oper == 'continue':
                continue
            elif oper == 'q' or oper == 'quit':
                break

            new_filename = filename.replace(filename, oper)
            old_file_path = os.path.join(directory, filename)
            new_file_path = os.path.join(directory, new_filename)
            os.rename(old_file_path, new_file_path)
            print(f"文件 {filename} 重命名为 {new_filename}", end="\\n\\n")

    except PermissionError:
        print(f"暂无权限访问该文件 {directory}.")
    except OSError as e:
        print(f"Error: {e}")

# 使用示例
if __name__ == '__main__':
    rename_files_in_directory(r'F:\\018_Paper')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值