python文件操作

1.文件操作的作用

⽂件操作的作⽤就是把⼀些内容(数据)存储存放起来,可以让程序下⼀次执⾏的时候直接使⽤,⽽不必重新制作⼀份,省时省⼒

2.文件的基本操作

2.1文件的操作步骤

  1. 打开⽂件
  2. 读写等操作
  3. 关闭⽂件

注意:可以只打开和关闭⽂件,不进⾏任何读写操作

2.1.1打开文件

在python,使⽤open函数,可以打开⼀个已经存在的⽂件,或者创建⼀个新⽂件

语法:open(name, mode)
解释:
**name:**是要打开的⽬标⽂件名的字符串(可以包含⽂件所在的具体路径)。
**mode:**设置打开⽂件的模式(访问模式):只读、写⼊、追加等

mode的分类:

mode类型说明(标黄的mode重点关注
r以只读⽅式打开⽂件。⽂件的指针将会放在⽂件的开头。这是默认模式。
rb以⼆进制格式打开⼀个⽂件⽤于只读。⽂件指针将会放在⽂件的开头。这是默认模式。
r+打开⼀个⽂件⽤于读写。⽂件指针将会放在⽂件的开头。
rb+以⼆进制格式打开⼀个⽂件⽤于读写。⽂件指针将会放在⽂件的开头。
w打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。
wb以⼆进制格式打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。
w+打开⼀个⽂件⽤于读写。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。
wb+以⼆进制格式打开⼀个⽂件⽤于读写。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。
a打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊。
ab以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊。
a+打开⼀个⽂件⽤于读写。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。⽂件打开时会是追加模式。如果该⽂件不存在,创建新⽂件⽤于读写。
ab+以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。如果该⽂件不存在,创建新⽂件⽤于读写

示例:(打开文件)

f=open('test.txt','w')#打开文件test.txt并进行读操作
#注意:此时的 f 是 open 函数的⽂件对象

示例:(文件的写操作)
语法:对象.write('内容‘)

f=open('test.txt','w')
#打开文件

f.write('hello wrld')
#对文件执行写操作
f.close
#关闭文件,这一步是必不可少的

注意事项:
1. w 和 a 模式:如果⽂件不存在则创建该⽂件;如果⽂件存在, w 模式先清空再写⼊, a 模式直接末尾追加。
2. r 模式:如果⽂件不存在则报错

示例:(read文件的读操作)
语法:⽂件对象.read(num)

f=open('test.txt')
con=f.read()
print(con)
f.close#此时必须加这个关闭文件的命令

注意事项: num表示要从⽂件中读取的数据的⻓度(单位是字节),如果没有传⼊num,那么就表示读取⽂件中所有的数据

示例:(readlines()解释:readlines可以按照⾏的⽅式把整个⽂件中的内容进⾏⼀次性读取,并且返回的是⼀个列表,其中每⼀⾏
的数据为⼀个元素

f = open('test.txt')
content = f.readlines()
print(content)#此时返回的是一个列表,一个数据为文件中的一行数据
# 关闭⽂件
f.close()

示例:(readline()一次读取一行数据)

f=open('test.txt')
first_line=f.readline()
print(f'第一行数据是:{first_line}')
second_line=f.readline()
print(f'第二行的数据是:{second_line}')
f.close#关闭文件

示例:(seek用来移动文件的指针)
语法;⽂件对象.seek(偏移量, 起始位置)

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

3.文件备份

1.实现的功能
⽤户输⼊当前⽬录下任意⽂件名,程序完成对该⽂件的备份功能(备份⽂件名为xx[备份]后缀,例如:test[备份].txt)

2.实现的步骤

1. 接收⽤户输⼊的⽂件名
2. 规划备份⽂件名
3. 备份⽂件写⼊数据

3.代码的实现



# 1. 接收⽤户输⼊的⽂件名

file_name=input('请输入需要备份的文件名:')#输入test.txt

# 2. 规划备份⽂件名test[备份].txt
#2.1 提取⽬标⽂件后缀
index = file_name.rfind('.')#找到文件名中.的下标位置
#2.2 组织备份的⽂件名,xx[备份]后缀
print(index) # 后缀中.的下标
print(file_name[:index]) # 源⽂件名(⽆后缀)test
print(file_name[index:])#.txt
copy_filename=file_name[:index]+'[备份]'+file_name[index:]
print(copy_filename)
# 3. 备份⽂件写⼊数据
# 3.1 打开源⽂件 和 备份⽂件
file=open(file_name,'rb')
new_file=open(copy_filename,'wb')
# 3.2 将源⽂件数据写⼊备份⽂件
while True:
    con=file.read()
    if len(con)==0:
        break
    new_file.write(con)
    
# 3.3 关闭⽂件
file.close
new_file.close

如果输入的文件是.txt是不合格的文件名(file_name),此时是需要提前判断文件名是否符合要求
修改后的程序为:

while True:
    # 1. 接收⽤户输⼊的⽂件名
    file_name=input('请输入需要备份的文件名:')#输入test.txt

    # 2. 规划备份⽂件名test[备份].txt
    #2.1 提取⽬标⽂件后缀
    index = file_name.rfind('.')#找到文件名中.的下标位置
    if index>0:
    #2.2 组织备份的⽂件名,xx[备份]后缀
    # print(index) # 后缀中.的下标
    # print(file_name[:index]) # 源⽂件名(⽆后缀)test
    # print(file_name[index:])#.txt
        copy_filename=file_name[:index]+'[备份]'+file_name[index:]
        print(copy_filename)
        # 3. 备份⽂件写⼊数据
        # 3.1 打开源⽂件 和 备份⽂件
        file=open(file_name,'rb')
        new_file=open(copy_filename,'wb')
        # 3.2 将源⽂件数据写⼊备份⽂件
        while True:
            con=file.read()
            if len(con)==0:
                break
            new_file.write(con)

            
        # 3.3 关闭⽂件
        file.close
        new_file.close
        break
    else:
        print(f'你输入的文件名为:{file_name},不符合要求')

4.文件和文件夹操作

在Python中⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能,具体步骤如下:
1导入os模块(import os
2.使用os模块里的函数(os.函数名())

1)文件重命名
os.rename(⽬标⽂件名, 新⽂件名)
2)删除文件
os.remove(⽬标⽂件名)
3)创建文件夹
os.mkdir(⽂件夹名字)
4)删除文件夹
os.rmdir(⽂件夹名字)
5)获取当前目录
os.getcwd()
6)改变默认目录
os.chdir(⽬录)
7)获取目录列表
os.listdir(⽬录)

示例:
实现的功能:
需求:批量修改⽂件名,既可添加指定字符串,⼜能删除指定字符串。
步骤

  1. 设置添加删除字符串的的标识
  2. 获取指定⽬录的所有⽂件
  3. 将原有⽂件名添加/删除指定字符串,构造新名字
  4. os.rename()重命名
import os
# 设置重命名标识:如果为1则添加指定字符,flag取值为2则删除指定字符
flag = 1
# 获取指定⽬录
dir_name = './'
# 获取指定⽬录的⽂件列表
file_list = os.listdir(dir_name)
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:]
 # 打印新⽂件名,测试程序正确性
print(new_name)
 
 # 重命名
os.rename(dir_name+name, dir_name+new_name)

修改后的程序更加方便;

import os
# 设置重命名标识:如果为1则添加指定字符,flag取值为2则删除指定字符
flag =int(input('请输入你想要执行的操作1为添加字符2为删除字符:'))
# 获取指定⽬录
dir_name = './'
# 获取指定⽬录的⽂件列表
file_list = os.listdir(dir_name)
print(file_list)
# 遍历⽂件列表内的⽂件
file_name=input('请输入需要修改的文件名:')
for name in file_list:
    # 添加指定字符
    if name==file_name:
        str_new=input('请输入需要添加的字符:')   
        if flag == 1:
            new_name = str_new + name
    # 删除指定字符
        elif flag == 2:
            num = len(str_new)
            new_name = name[num:]
else:
    print('你输入的文件名不存在')
    # 打印新⽂件名,测试程序正确性
print(new_name)
 
 # 重命名
os.rename(dir_name+name, dir_name+new_name)
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值