IT评测·应用市场-qidao123.com

标题: 13文件操作 [打印本页]

作者: 河曲智叟    时间: 2023-4-13 18:43
标题: 13文件操作
文件操作

文件读写

模式描述r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。r+打开一个文件用于读写。文件指针将会放在文件的开头。rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
读写操作方法

模式介绍read(s)不填写s就读取所有文件内容,填写读取指定长度数据write()写入字符串或进制文件writelines()写入以列表保存的字符串或进制文件readline()以行读取数据readlines()读取所有数据存放列表只写模式w

注意:
  1. f = open('filetest.txt', mode='w', encoding='utf-8')
  2. # 判断是否可写
  3. print(f.writable())
  4. # 写入内容
  5. f.write('i am yueyue\nasdasda\n')
  6. # 写入多行
  7. f.writelines('I love You\nasdasdasdsad')
  8. # 关闭文件
  9. f.close()
复制代码
追加模式a

注意
  1. f = open('filetest.txt', mode='a', encoding='utf-8')
  2. # 判断是否可写
  3. print(f.writable())
  4. # 写入内容
  5. f.write('i am yueyue\nasdasda\n')
  6. # 写入多行
  7. f.writelines('I love You\nasdasdasdsad')
  8. # # 关闭文件
  9. f.close()
复制代码
w 和 a 模式:如果文件不存在则创建该文件;如果文件存在,w 模式先清空再写入,a 模式直接末尾追加。
只读模式r

  1. f = open('filetest.txt', mode='r', encoding='utf-8')
  2. # 判断是否可读
  3. print(f.readable())
  4. # 逐行读取
  5. print(f.readline(),end='')
  6. # 读取所有 返回值为列表
  7. print(f.readlines())
  8. # # 读取文件全部内容
  9. print(f.read())
复制代码
1)tell的使用
  1. f = open("filetest.txt", mode="r", encoding="utf-8")
  2. '''
  3. filetest2.txt
  4. helloworld
  5. 你好
  6. '''
  7. # 汉字代表三个字节 换行代表两个字节  字母数字代表的是一个字节
  8. print(f.tell())
  9. print(f.readline(), end="")
  10. print(f.tell())
  11. print(f.readline())
  12. print(f.tell())
复制代码
2)seek的使用
  1. f = open("filetest.txt", mode="rb")
  2. '''
  3. filetest2.txt
  4. helloworld
  5. 你好
  6. '''
  7. # 改变指针位置
  8. """
  9. offset: 偏移量
  10. whence: 0 从文件头开始  1 当前位置开始  2 文件尾
  11. 注意,当offset值非0时,Python要求文件必须要以二进制格式打开,
  12. 否则会抛出 io.UnsupportedOperation 错误。
  13. """
  14. print(f.tell())
  15. # 读取一个字节,文件指针自动后移1个数据
  16. print(f.read(1))
  17. print(f.tell())
  18. # 将文件指针从文件开头,向后移动到 5 个字符的位置
  19. f.seek(5)
  20. print(f.tell())
  21. print(f.read(1))
  22. # 将文件指针从当前位置,向后移动到 5 个字符的位置
  23. f.seek(5, 1)
  24. print(f.tell())
  25. print(f.read(1))
  26. # 将文件指针从文件结尾,向前移动到距离1个字符的位置
  27. f.seek(-1, 2)
  28. print(f.tell())
  29. print(f.read(1))
复制代码
文件备份

需求:用户输入当前目录下任意文件名,程序完成对该文件的备份功能(备份文件名为xx备份后缀,例如:test备份.txt)
代码实现
A、接收用户户输入目标文件名
        1、提取目标文件后缀
        2、组织备份的文件名,xx备份.后缀
  1. old_name = input("请输入文件名:")
  2. index = old_name.rfind(".")  # rfind()函数从右开始找元素所在索引位置
  3. new_name = old_name[:index]+"备份"+old_name[index:]
复制代码
B、备份文件写入数据
           1、打开源文件 和 备份文件
       2、将源文件数据写⼊备份文件
       3、关闭文件
  1. old_name = input("请输入文件名:")
  2. index = old_name.rfind(".")
  3. new_name = old_name[:index]+"备份"+old_name[index:]
  4. # 老文件
  5. old_f = open(old_name,"r")
  6. # 新文件
  7. new_f = open(new_name,"w")
  8. cont = old_f.readlines()
  9. print(cont)
  10. new_f.writelines(cont)
  11. old_f.close()
  12. new_f.close()
复制代码
文件夹操作

模块.函数介绍os.rename()重命名文件或者文件夹os.remove()删除文件os.mkdir()创建文件夹os.makedirs()以递归方式创建多个文件夹os.rmdir()删除文件夹(空文件夹)os.removedirs()以递归方式删除多个空文件夹os.getcwd()获取当前路径os.chdir()改变默认⽬录os.listdir()获取文件中的文件os.path.exists()判断该路径下的文件或文件夹是否存在os.path.join()拼接路径shutil.copy()复制文件shutil.rmtree()把文件和内容全部删除批量重命名

文件夹添加字符串
  1. import os
  2. # 先切换路径  
  3. os.chdir('testsad')
  4. print(os.getcwd())
  5. # 遍历此路径下的文件
  6. file_list = os.listdir(os.getcwd())
  7. print(file_list)
  8. for file in file_list:
  9.     # 循环拼接
  10.     new_name = "python_" + file
  11.     # print(new_name)
  12.     os.rename(file,new_name)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4