文件操作的作用

把一些数据存放起来,可以让程序下一次执行时直接使用。

文件的基本操作

打开文件==>读写操作==>关闭文件

文件操作的步骤

打开文件

在Python中,使用open()函数,可以打开一个已存在的文件,或创建一个新文件,返回的是一个**file**对象

  1. open(name, mode)
  2. 其中:
  3. 1. name是目标文件名,或带路径的目标文件名;
  4. 2. mode是打开文件的模式,只读、写入或追加等,默认的是只读。
  1. fo = open("demo.txt", "w") # 创建文件
  2. fo.write("aaa") # 想文件写入数据
  3. fo.close() # 关闭文件

文件打开模式

  • **r**”、“**w**”、“**a**”为主模式,带“**+**”符的表示有读写功能,“**b**”表示以二进制方式打开;
  • 所有的衍生模式,都继承其主模式的功能。 | r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 | | —- | —- | | rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 | | r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 | | rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 | | w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除如果该文件不存在,创建新文件。 | | wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 | | w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 | | wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 | | a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 | | ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 | | a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 | | ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |

读写操作

read()

返回的是文件内容

  1. 文件对象.read(num)
  2. 其中:
  3. num表示从文件中读取的数据的长度(单位是字节),如果不传入num,表示读取文件中所有的数据。
  1. fo = open("test.txt", "r")
  2. # fo.write("bbb")
  3. tempFile = fo.read()
  4. print(tempFile) # 打印文件内的所有内容
  5. fo.close()

readlines()

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

  1. fo = open("test.txt", "r")
  2. tempFile = fo.readlines() # 按行读取整个文件
  3. print(tempFile) # ['aaaaa\n', 'bbbbb\n', 'ccccc\n', 'ddddd']
  4. fo.close()

readline()

readline()可以按照行的方式读取文件内容,一次读取一行数据,返回的是文件内容。

  1. fo = open("test.txt", "r")
  2. tempFile1 = fo.readline() # 按行读取文件内容
  3. tempFile2 = fo.readline() # 按行读取文件内容
  4. print(tempFile1) # aaaaa
  5. print(tempFile2) # bbbbb
  6. fo.close()

seek()

用来移动文件指针

  1. 文件对象.seek(偏移量, 起始位置)
  2. 起始位置:
  3. 0:----文件开头;
  4. 1:----当前位置;
  5. 2:----文件结尾。
  1. fo = open("test.txt", "r")
  2. fo.seek(2, 0) # 文件指针指向开头偏移2个字节
  3. tempFile1 = fo.readlines() # 按行读取
  4. print(tempFile1) # ['aaa\n', 'bbbbb\n', 'ccccc\n', 'ddddd']
  5. fo.close()

关闭文件

  1. 文件对象.close()

文件读写示例——文件备份操作

  1. """
  2. 用户输入当前目录下的文件名(包含后缀名),程序完成对该文件的备份功能
  3. 备份文件为xx[备份]后缀,例如:test[备份].txt
  4. """
  5. # 用户输入
  6. oldName = input("请输入你要备份的文件名:")
  7. # 备份名处理
  8. # 从右侧开始查找文件后缀的第一个点
  9. pointIndex = oldName.rfind(".")
  10. # 判断文件名是否有效
  11. if pointIndex > 0: # 当用户输入".txt"时,pointIndex值为0,为无效文件名(编译会报错)
  12. postFix = oldName[pointIndex:]
  13. newName = oldName[:pointIndex] + "[备份]" + postFix
  14. # 写入数据操作
  15. """
  16. # 方法1(整个文件读写):----占用内存空间(不推荐)
  17. # 读取旧文件数据
  18. oldFile = open(oldName, "rb")
  19. tempData = oldFile.read()
  20. oldFile.close()
  21. # 数据写入新文件
  22. newFile = open(newName, "wb")
  23. newFile.write(tempData)
  24. newFile.close()
  25. """
  26. # 方法2(循环读写固定长度数据):占用内存较小----推荐
  27. # 读取旧文件数据
  28. oldFile = open(oldName, "rb")
  29. newFile = open(newName, "wb")
  30. # 数据写入新文件
  31. while True:
  32. tempData = oldFile.read(10)
  33. if len(tempData) == 0: # 退出条件
  34. break
  35. newFile.write(tempData)
  36. oldFile.close()
  37. newFile.close()

文件和文件夹操作

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

  1. # 导入模块
  2. import os
  3. # 使用功能
  4. os.函数名()

文件

文件重命名

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

删除文件

  1. os.remove(目标文件名)

文件夹

创建文件夹

  1. os.mkdir(文件夹名称)

删除文件夹

  1. os.rmdir(文件夹名称)

获取当前目录路径

  1. os.getcwd()

改变默认目录

  1. os.chdir(目录路径)

获取目录列表

  1. os.listdir(目录)

文件操作示例——批量修改文件名

  1. """
  2. 批量修改文件名:
  3. 1.可添加指定文字;
  4. 2,可删除指定文字。
  5. """
  6. # 导入os模块
  7. import os
  8. modifyMode = int(input("请输入你要执行的修改模式(1:增加,0:删除):"))
  9. # 接收传入的修改名字
  10. if modifyMode == 1:
  11. modifySeg = input("请输入你要批量增加的字符:")
  12. # 获取当前目录列表
  13. fileNamelist = os.listdir()
  14. # print(fileNamelist)
  15. # 构造新名字
  16. for i in fileNamelist:
  17. newName = modifySeg + i
  18. os.rename(i, newName)
  19. elif modifyMode == 0:
  20. modifySeg = input("请输入你要批量增加的字符:")
  21. # 获取当前目录列表
  22. fileNamelist = os.listdir()
  23. # print(fileNamelist)
  24. # 构造新名字
  25. for i in fileNamelist: # 功能过于简单
  26. length = len(modifySeg)
  27. newName = i[length:]
  28. os.rename(i, newName)
  29. else:
  30. print("请按要求输入信息!")
  31. newNamelist = os.listdir()
  32. print(newNamelist)