python对文件的操作

Dear 丶 2021-10-19 14:56 499阅读 0赞

1、文件操作类型有:r、w、a、r+、w+、a+、rb、wb、ab

r 文件的读取(只读)

f = open(文件路径, mode=”模式”, encoding=”编码格式”)

  1. 读的路径有两种:绝对路径和相对路径
  2. 相对路径:也就是相对当前执行文件所在的路径,其中("../"就是返回上一层目录)
  3. 绝对路径:就是相对系统的根目录所在的路径
  4. f = open("file/wuse", mode="r", encoding="utf-8")
  5. s = f.read()
  6. f.close() # 关闭句柄
  7. print(s)

w 对文件有写操作(# 写入之前会情掉原来的内容)

  1. f = open("小护士模特", mode="w", encoding="utf-8")
  2. f.write("杜十娘")
  3. f.flush()
  4. f.close()

a 读写操作(# 在原来的基础上进行追加内容.)

原文件内容 20190812194004793.png

  1. f = open("小护士模特", mode="a", encoding="utf-8")
  2. f.write("小龙女")
  3. f.flush()
  4. f.close()

执行程序后的内容20190812194045515.png

rb bytes 读写操作的是字节. 用在非文本上,如果要打印出字符串则还需要进行解码

  1. f = open("小护士模特",mode="rb") # 读取的内容直接就是字节
  2. bs = f.read()
  3. print(bs.decode("utf-8")) # 需要解码
  4. f.close()

wb 需要进行编码操作否则会报错,如下

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM4NDMyNzMy_size_16_color_FFFFFF_t_70

正确操作如下

  1. f = open("小护士模特",mode="wb") # 读取的内容直接就是字节
  2. f.write("你不好".encode("utf-8"))
  3. f.close()

r+ 读写模式.
需要移动光标进行反复读写

  1. r+模式, 默认情况下光标在文件的开头, 必须先读, 后写
  2. 不管你前面读了几个. 后面去写都是在末尾
  3. f = open("老师点名", mode="r+", encoding="utf-8") # r+模式, 默认情况下光标在文件的开头, 必须先读, 后写
  4. f.write("周润发")
  5. s = f.read()
  6. f.flush()
  7. f.close()
  8. print(s)
  9. 1.在没有任何操作之前进行写. 在开头写
  10. 2. 如果读取了一些内容. 再写, 写入的是最后
  11. f = open("精品", mode="r+", encoding="utf-8")
  12. s = f.read(3)
  13. f.write("哈哈")
  14. print(ss)truncate()截断
  15. strip() 去掉空格. 还能去掉\n\t

2、seek() 移动光标到xx位置
开头: seek(0), 末尾: seek(0,2)

  1. 移动到开头: f.seek(0) 开头
  2. 移动到末尾: f.seek(0, 2) 末尾 第二个参数有三个值. 0: 再开头, 1: 在当前, 2: 末尾
  3. f = open("文件", mode="r+", encoding="utf-8")
  4. f.read(3)
  5. f.seek(3) # 移动到xx位置

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM4NDMyNzMy_size_16_color_FFFFFF_t_70 1

3、文件的修改

  1. 修改原理:创建新文件. 把修改后的内容写入新文件. 删除老文件. 重命名新文件
  2. 调用的新模块: import os
  3. os.remove("")删除文件
  4. os.rename("源文件", "新文件名") 重命名文件

讲课试题:将文件名为“吃的”的文件中所含有的“肉”字都替换成“菜”

常见思路:

with open(“文件名”) as f:
不需要关闭文件句柄

  1. import os
  2. with open("吃的", mode="r", encoding="utf-8") as f1, \
  3. open("吃的_副本", mode="w", encoding="utf-8") as f2:
  4. s = f1.read()
  5. ss = s.replace("肉", "菜")
  6. f2.write(ss)
  7. os.remove("吃的") # 删除文件
  8. os.rename("吃的_副本", "吃的") # 重命名文件

使用迭代方式:

  1. for line in f:
  2. line 一行数据
  3. import os
  4. with open("吃的", mode="r", encoding="utf-8") as f1, \
  5. open("吃的_副本", mode="w", encoding="utf-8") as f2:
  6. for line in f1:
  7. s = line.replace("菜", "肉")
  8. f2.write(s)
  9. os.remove("吃的") # 删除文件
  10. os.rename("吃的_副本", "吃的") # 重命名文件

作业:

1、文件内容如下:

20190812203717255.png

将文件全部读出来

  1. f=open("a.txt", mode="r", encoding="utf-8")
  2. s=f.read()
  3. print(s)
  4. f.close()

  1. with open("a.txt", mode="r", encoding="utf-8") as f:
  2. for i in f:
  3. print(i.strip())

在文件末尾添加一行内容为“信不信由你,反正我是信了”

  1. f=open("a.txt", mode="a", encoding="utf-8")
  2. f.write("\n信不信由你,反正我是信了")
  3. f.flush()
  4. f.close()

将文件全部读出来,并在末尾新增一行内容为“信不信由你,反正我是信了”

  1. f=open("a.txt", mode="r+", encoding="utf-8")
  2. f.read()
  3. f.write("\n信不信由你,反正我是信了")
  4. f.flush()
  5. f.close()

将文件清空并换成一下内容

  1. f=open("a.txt", mode="w", encoding="utf-8")
  2. f.write("每天坚持一点,\n每天努力一点,\n每天多思考一点,\n慢慢你会发现,\n你的进步越来越大。")
  3. f.flush()
  4. f.close()

  1. f=open("a.txt", mode="w+", encoding="utf-8")
  2. f.write("""每天坚持一点,
  3. 每天努力一点,
  4. 每天多思考一点,
  5. 慢慢你会发现,
  6. 你的进步越来越大。""")
  7. f.flush()
  8. f.close()

在上一题基础上再”慢慢你会发现,”一行前加上“时间久了,”一行内容

  1. import os
  2. with open("a.txt",mode="r",encoding="utf-8") as f1,\
  3. open("a_new.txt",mode="w",encoding="utf-8") as f2:
  4. s=f1.read()
  5. ss=s.replace("慢慢你会发现,","时间久了,\n慢慢你会发现,")
  6. f2.write(ss)
  7. os.remove("a.txt")
  8. os.rename("a_new.txt","a.txt")
  9. 2、有以下文件内容
  10. 序号 部门 人数 平均年龄 备注
  11. 1 python 30 26 单身狗
  12. 2 linux 26 30 没对象
  13. 3 运营部 20 24 女生多

要求:将文件内容按以下模式[{‘序号’: ‘1’, ‘部门’: ‘python’, ‘人数’: ‘30’, ‘平均年龄’: ‘26’, ‘备注’: ‘单身狗’, ‘tianjia’: ‘q’}],将文本文件内容输出

  1. f=open("a.txt",mode="r",encoding="utf-8")
  2. s=f.readline().split()
  3. print(s)
  4. list=[]
  5. for j in f:
  6. dic={}
  7. ss=j.split()
  8. for i in range(len(ss)):
  9. dic[s[i]]=ss[i]
  10. list.append(dic)
  11. print(list)

发表评论

表情:
评论列表 (有 0 条评论,499人围观)

还没有评论,来说两句吧...

相关阅读

    相关 python word文件进行操作

    博主转发背景:很久不用python,但是看着身边的大小朋友们在操作机械性工作时,总是想起python的好。找到一篇文章,重新对电脑做了系统环境安装。下文的个别信息已经过时,已做