课程:⽂件操作
    ⽬标

    • ⽂件操作的作⽤
    • ⽂件的基本操作
      • 打开
      • 读写
      • 关闭
    • ⽂件备份
    • ⽂件和⽂件夹的操作

    ⼀. ⽂件操作的作⽤
    思考:什么是⽂件?
    image.png
    思考:⽂件操作包含什么?
    答:打开、关闭、读、写、复制….
    思考:⽂件操作的的作⽤是什么?
    答:读取内容、写⼊内容、备份内容……

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

    ⼆. ⽂件的基本操作
    2.1 ⽂件操作步骤
    1. 打开⽂件
    2. 读写等操作
    3. 关闭⽂件

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

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

    1. open(name, mode)

    name:是要打开的⽬标⽂件名的字符串(可以包含⽂件所在的具体路径)。
    mode:设置打开⽂件的模式(访问模式):只读、写⼊、追加等。
    2.1.1.1 打开⽂件模式
    image.png
    2.1.1.2 快速体验

    1. f = open('test.txt', 'w')

    注意:此时的 f 是 open 函数的⽂件对象。
    2.1.2 ⽂件对象⽅法
    2.1.2.1 写

    • 语法

      1. 对象对象.write('内容')
    • 体验

      1. # 1. 打开⽂件
      2. f = open('test.txt', 'w')
      3. # 2.⽂件写⼊
      4. f.write('hello world')
      5. # 3. 关闭⽂件
      6. f.close()

      注意:

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

    2.1.2.2 读

    • read()

      1. ⽂件对象.read(num)

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

    • readlines()

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

    1. f = open('test.txt')
    2. content = f.readlines()
    3. # ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc']
    4. print(content)
    5. # 关闭⽂件
    6. f.close()
    • readline()

    readline()⼀次读取⼀⾏内容。

    1. f = open('test.txt')
    2. content = f.readline()
    3. print(f'第⼀⾏:{content}')
    4. content = f.readline()
    5. print(f'第⼆⾏:{content}')
    6. # 关闭⽂件
    7. f.close()

    image.png
    2.1.2.3 seek()
    作⽤:⽤来移动⽂件指针。
    语法如下:

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

    起始位置:

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

    2.1.3 关闭

    1. 文件对象.close()

    三. ⽂件备份
    需求:⽤户输⼊当前⽬录下任意⽂件名,程序完成对该⽂件的备份功能(备份⽂件名为xx[备份]后缀,例
    如:test[备份].txt)。
    3.1 步骤
    1. 接收⽤户输⼊的⽂件名
    2. 规划备份⽂件名
    3. 备份⽂件写⼊数据
    3.2 代码实现
    1. 接收⽤户输⼊⽬标⽂件名

    1. old_name = input('请输⼊您要备份的⽂件名:')
    1. 规划备份⽂件名
      2.1 提取⽬标⽂件后缀
      2.2 组织备份的⽂件名,xx[备份]后缀
      1. # 2.1 提取⽂件后缀点的下标
      2. index = old_name.rfind('.')
      3. # print(index) # 后缀中.的下标
      4. # print(old_name[:index]) # 源⽂件名(⽆后缀)
      5. # 2.2 组织新⽂件名 旧⽂件名 + [备份] + 后缀
      6. new_name = old_name[:index] + '[备份]' + old_name[index:]
      7. # 打印新⽂件名(带后缀)
      8. # print(new_name)
    2. 备份⽂件写⼊数据
      3.1 打开源⽂件 和 备份⽂件
      3.2 将源⽂件数据写⼊备份⽂件
      3.3 关闭⽂件
      1. # 3.1 打开⽂件
      2. old_f = open(old_name, 'rb')
      3. new_f = open(new_name, 'wb')
      4. # 3.2 将源⽂件数据写⼊备份⽂件
      5. while True:
      6. con = old_f.read(1024)
      7. if len(con) == 0:
      8. break
      9. new_f.write(con)
      10. # 3.3 关闭⽂件
      11. old_f.close()
      12. new_f.close()
      3.3 思考
      如果⽤户输⼊ .txt ,这是⼀个⽆效⽂件,程序如何更改才能限制只有有效的⽂件名才能备份?
      答:添加条件判断即可。
      1. old_name = input('请输⼊您要备份的⽂件名:')
      2. index = old_name.rfind('.')
      3. if index > 0:
      4. postfix = old_name[index:]
      5. new_name = old_name[:index] + '[备份]' + postfix
      6. old_f = open(old_name, 'rb')
      7. new_f = open(new_name, 'wb')
      8. while True:
      9. con = old_f.read(1024)
      10. if len(con) == 0:
      11. break
      12. new_f.write(con)
      13. old_f.close()
      14. new_f.close()
      四. ⽂件和⽂件夹的操作
      在Python中⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能,具体步骤如下:
      1. 导⼊os模块
      1. import os
    3. 使⽤ os 模块相关功能
      image.png
      image.png
      五.应⽤案例
    • 需求:批量修改⽂件名,既可添加指定字符串,⼜能删除指定字符串。

    步骤
    1. 设置添加删除字符串的的标识
    2. 获取指定⽬录的所有⽂件
    3. 将原有⽂件名添加/删除指定字符串,构造新名字
    4. os.rename()重命名

    • 代码

      1. import os
      2. # 设置重命名标识:如果为1则添加指定字符,flag取值为2则删除指定字符
      3. flag = 1
      4. # 获取指定⽬录
      5. dir_name = './'
      6. # 获取指定⽬录的⽂件列表
      7. file_list = os.listdir(dir_name)
      8. # print(file_list)
      9. # 遍历⽂件列表内的⽂件
      10. for name in file_list:
      11. # 添加指定字符
      12. if flag == 1:
      13. new_name = 'Python-' + name
      14. # 删除指定字符
      15. elif flag == 2:
      16. num = len('Python-')
      17. new_name = name[num:]
      18. # 打印新⽂件名,测试程序正确性
      19. print(new_name)
      20. # 重命名
      21. os.rename(dir_name+name, dir_name+new_name)

      image.png
      image.png