文件操作的作用

文件的基本操作

打开

读写

关闭

文件备份

文件和文件夹的操作

二、文件的基本操作

2.1文件操作步骤

1、打开文件

2、读写等操作

3、关闭文件

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

1、打开

在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法:

open(name, mode)

name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)

mode:设置打开的模式(访问模式):只读、写入、追加等

体验文件操作

# 1、打开文件 open()
f = open('test.txt', 'w')
# 2、读写操作 write()  read()
f.write('aaaaa')
# 3、关闭文件 close()
f.close()

访问模式特点:

主访问模式包括三个: r w a

r,以只读方式打开文件,文件的指针将会放在文件的开头,这是默认模式

# r,如果文件不存在,就会报错,不支持写入操作,只支持只读
f = open('test.txt', 'r')
# f.write('aa')
f.close()

w,打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件。

# w 如果文件不存在,就会生成一个新的文件,写入的内容会覆盖以前的内容
f = open('1.txt', 'w')
f.write('bbbb')
f.close()

a 打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾,也就是新的内容会被写入到已有内容之后,如果该文件不存在,创建新文件进行写入。

# a 如果文件不存在,就会生成一个新的文件,写入的内容会追加到原有内容后面
f = open('2.txt', 'a')
f.write('dddd')
f.close()


访问模式参数是否可以省略,可以省略,省略表示访问模式为 r


# 访问模式参数是否可以省略,可以省略,省略表示访问模式为 r
f = open('1.txt')
f.close()

三、文件读取的操作:

1、read()

文件对象.read(num)

num表示要从文件中读取的数据的长度,单位是字节,如果没有传num,那么表示读取文件中的所有数据。

f = open('test.txt', 'r')
print(f.read())
f.close()
# 输出
# aaaaa
# bbbbb
# ccccc
# ddddd
# eeeee

2、readlines()

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

f = open('test.txt', 'r')
print(f.readlines())
f.close()
# 输出['aaaaa\n', 'bbbbb\n', 'ccccc\n', 'ddddd\n', 'eeeee\n']

3、readline()

f = open('test.txt', 'r')
print(f.readline())
print(f.readline())
f.close()
# 输出 aaaaa
# bbbbb

文件访问模式特点

模式

描述        

r

以只读方式打开文件,文件的指针将会放在文件的开头,这个是默认模式

rb

以二进制格式打开一个文件用于只读,文件指针将会放在文件的开头,这个是默认模式

r+        

打开一个文件用于读写,文件指针将会放在文件的开头

rb+

以二进制格式打开一个文件用于读写,文件指针将会放在文件的开头

w

打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件

wb

以二进制格式打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件

w+

打开一个文件用于读写。如果该文件已存在则打开文件,从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建文件

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件

a

打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾,也就是新的内容将会被写入到已有内容之后,如果该文件不存在,创建新文件进行写入。

但凡是带 b  都是以二进制格式打开文件的,但凡带 + 号的都是可读可写模式

对于带 r  的,但凡文件不存在,都报错,对于带w的,文件不存在,就创建新的文件

文件指针就是光标。

 r+, r没有该文件则报错,文件指针在开头,所以能读取出来数据

w+, w没有该文件会新建文件,w特点,文件指针在开头,用新内容覆盖原有内容

a+, 没有该文件会新建文件:文件指针在结尾,无法读取数据(文件指针后面没有数据)

seek()

作用:用来移动文件指针,

语法如下:

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

起始位置:

  0:文件开头

  1:当前位置

  2:文件结尾

例如 使用a 文件访问模式,指针在最后面,然后调用seek(),使指针前移,可以访问出数据

"""
语法:文件对象.seek(偏移量,起始位置) 0 开头 1 当前 2 结尾
目标:
   1、r 改变文件指针位置,改变读取数据开始位置或把文件指针放结尾(无法读取数据)
   2、a 改变文件指针位置,做到可以读取数据
"""
f = open('test.txt', 'r')
# f.seek(3, 0)
f.seek(0, 2)
con = f.read()
print(con)
# 输出
# aa
# bbbbb
# ccccc
# ddddd
# eeeee

# 输出 空
f = open('test.txt', 'a+')
f.seek(0, 0)
con = f.read()
print(con)
# 输出 
# aaaaa
# bbbbb
# ccccc
# ddddd
# eeeee

四、文件备份

1、用户输入目标文件 

2、规划备份文件的名字

修改名字

3、备份文件写入数据(数据和原文件一样)

打开文件

写入数据

关闭文件

# 1、接收用户输入目标文件
old_name = input('请输入要备份文件的名字')
print(old_name)
print(type(old_name))
# 2、规划备份文件名
index = old_name.rfind('.')
if index > 0:
    print(index)
    new_name = old_name[:index] + '[备份]' + old_name[index:]
    print(new_name)
    # 输出test[备份].txt
    # 3、备份写入数据
    # 3.1 打开原文件和备份文件
    old_f = open(old_name, 'rb')
    new_f = open(new_name, 'wb')

    # 3.2 原文件读取,备份文件写入
    while True:
        con = old_f.read(1024)
        if len(con) == 0:
            break
        new_f.write(con)
    # 3.3 关闭文件
    old_f.close()
    new_f.close()
else:
    print('输入的文件名错误,请重新输入')

五、文件和文件夹的操作

文件和文件夹的操作要借助os模块里的相关功能,具体步骤如下:

1、导入os模块

import os

2、使用os模块相关功能

os.函数名()

2.1  文件重命名

os.rename(目标文件名,新文件名)

import os
# 1、rename(),重命名
os.rename('test[备份文件].txt', '11.txt')

os.rename() 重命名文件夹,格式和重命名 文件一样

os.rename('aaa', 'ccc')

2.2 删除文件

os.remove(目标文件名)

# 2、remove(),删除文件
os.remove('11.txt')

2.3创建文件夹

os.mkdir(文件夹名字)

# 3、mkdir创建文件夹
os.mkdir('aaa')

2.4删除文件夹

os.rmdir(文件夹名字)

os.rmdir('aaa')

2.5获取当前目录

os.getcwd()

print(os.getcwd())

2.6改变默认目录

os.chdir(目录)

os.mkdir('aaa')
os.chdir('aaa')
os.mkdir('bbb')

2.7获取目录列表

os.listdir(目录),返回一个列表

print(os.listdir())
# 输出 ['01-体验文件操作.py', '02-主访问模式特点.py', '03-读取函数之read().py', '04-访问模式特点02.py']
print(os.listdir('aaa'))
['bbb']

获取aaa文件夹下面的目录

3、应用案例

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

步骤:

3.1 先获取目录里的所有文件

3.2 构造新的文件名

3.3 重命名

import os

# os.rename('ccc', 'aaa')
file_name = os.listdir('aaa')
print(file_name)
for i in file_name:
    new_name = 'python_' + i
    os.rename(i, new_name)

优化后,批量修改名字和批量删除名字

import os

flag = 1
# os.rename('ccc', 'aaa')
file_name = os.listdir('aaa')
print(file_name)
for i in file_name:
    if flag == 1:
        new_name = 'python_' + i
    elif flag == 2:
        num = len('python_')
        new_name = i[num:]
    os.rename(i, new_name)

六、总结

文件操作步骤

6.1 打开:

文件对象 = open(目标文件,访问模式)

6.2 操作:

文件对象.read()

文件对象.readlines()

文件对象.readline()

文件对象.write()

seek()  改变指针位置

6.3  关闭

文件对象.close()

6.4 主访问模式

r 读,文件不存在则报错,文件指针在开头

w 写,文件不存在则创建文件 ,文件指针在开头,会把原数据覆盖掉

a 追加,文件指针在结尾,追加内容

6.5 文件和文件夹操作

导入 os模块

重名名:os.rename()

获取当前目录:os.getcwd()

获取目录列表: os.listdir()