【Python】文件操作

本文详细介绍了如何在Python中使用open()函数进行文件操作,包括读写、重命名、删除,以及如何实现文件备份,通过实例演示了批量修改文件名的方法。涵盖了文件读取、模式选择、目录操作和数据备份的关键知识点。
摘要由CSDN通过智能技术生成

一、打开文件

  • open():该函数可以打开一个存在的文件,或者创建一个文件。

语法:open('name', 'mode')

name:打开目标文件名的字符串或目标文件的路径。

mode:设置文件的访问模式:只读、写入、追加等。

模式:

r以只读方式打开文件(read)。文件的指针将会放在文件的开头。默认模式。
w打开一个文件只用于写入(write)。如果该文件已存在则将其覆盖;若文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建文件并写入。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。默认模式。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖;若文件不存在,创建新文件。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建文件并写入。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。文件若不存在,程序会crash。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖;若文件不存在,创建新文件。
a+打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建文件用于读写。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖;若文件不存在,创建新文件。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。

 二、文件读取

  • read():对象文件.read(num)

num:表示要从文件中读取的数据的长度(单位是字节),注意换行'\n'计一个字节,如果没有传入num,那么就表示读取文件中所有的数据。

  • readlines():按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
  • readline():一次读取一行内容。

三、文件和文件夹的操作

在Python中文件和文件夹的操作要借助os模块里面的相关功能完成。

文件:

  • seek():用来移动文件指针。

        语法:文件对象.seek(偏移量, 起始位置)

        起始位置:0:文件开头   1:当前位置    2:文件结尾。

  • write():文件对象.write('内容')
  • os.rename(目标文件名,新文件名):重命名目标文件。
  • os.remove(文件名):删除文件。

文件夹:        

  • os.mkdir(文件夹名字):创建文件夹。
  • os.rmdir(文件夹名字):删除文件夹。
  • os.getcwd():获取当前目录。
  • os.chdir(目录):改变默认目录(一般为源文件的目录)。
  • os.listdir(目录):获取目录列表。


四、文件备份

1、接收用户输入的目标文件

old_name = input('输入要备份的文件名')

2、规划备份文件名

        2.1、提取目标文件名和后缀

        2.2、判断文件名是否有效

        2.3、组织备份的文件名,xx[备份]后缀

#获取目标文件后缀的开始下标,细节:rfind()
index = old_name.rfind('.')
#判断文件名是否有效
if index > 0:   
    postfix = old_name[index:]
new_name = old_name[:index] + '[备份]' + postfix

3、备份文件写入数据

        3.1、打开源文件 和 备份文件

old_f = open(old_name, 'rd') #使用rd方式能稳定打开文件
new_f = open(new_name, 'wb')

        3.2、将源文件数据写入备份文件

        细节:如果不确定目标文件大小,就循环读取写入,当读取的数据没有了就终止循环。

while True:
    con = old_f.read(1024)
    if con == 0:
        #表示读写完成
        break
    new_f.write(con)#写入old_f的内容

        3.3、关闭文件

old_f.close()
new_f.close()

五、应用案例

批量修改文件名,既可以添加指定内容,又能删除指定字符串。

  • 步骤
  1. 设置添加删除字符串的标识
  2. 获取指定目录的所有文件
  3. 将原有文件名添加/删除指定字符串,构造新名字
  4. os.rename()重命名
import  os
#1则添加指定字符,2则删除指定字符
flag = 2
file_list = os.listdir()
print(file_list)
#遍历文件列表内的文件
for name in file_list:
    #添加指定字符
    if flag == 1:
        new_name = 'Python_' + name
    elif flag == 2:
        num = len('Python_')
        new_name = name[num:]
    os.rename(name, new_name)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SamRol

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

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

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

打赏作者

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

抵扣说明:

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

余额充值