当前位置:   article > 正文

Python--文件基本操作_python编辑文本文件

python编辑文本文件

文件的存储方式

  • 在计算机中,文件是以 二进制的方式保存在磁盘上的

文本文件和二进制文件

  • 文本文件
    • 可以使用文本编辑软件查看
    • 本质上还是二进制文件
  • 二进制文件
    • 保存的内容 不是给人直接阅读的,而是提供给其它软件使用的
    • 二进制文件不能使用 文件编辑软件 查看

文件基本操作

操作文件的套路

在计算机 中要操作文件一共包含三个步骤:
1.打开文件

2.读、写文件

读 将文件内容读入内容

写 将内存内容写入文件

3.关闭文件

操作文件的函数/方法

序号函数/方法说明
1open打开文件,并且返回文件操作对象
2read将文件内容读取到内存
3write将指定内容写入文件
4close关闭文件

  • open 函数负责打开文件,并且返回文件对象
  • read /write / close 三个方法都需要通过文件对象 来调用

read方法——读取文件

  • open 函数的第一个参数是要打开的文件名(文件名区分大小写)
    • 如果文件存在,返回 文件操作对象
    • 如果文件不存在,会抛出异常
  • read 方法可以一次性 读入 并 返回文件的所有内容
  • close 方法负责关闭文件
    • 如果忘记关闭文件,会造成系统资源消耗,而且会影响到后续对文件的访问
  1. # 打开文件
  2. f=open("D:\测试.txt","r",encoding="UTF-8")
  3. print(f"{type(f)}")
  4. # 读取文件 -read()
  5. x=f.read(10)
  6. print(f"读取10个字节的结果是:{x}")
  7. print(f"read方法读取全部内容是:{f.read()}")
  8. # 读取文件 -readlines()
  9. lines=f.readlines()
  10. print(f"lines对象的类型是:{type(lines)}")
  11. print(f"lines对象的内容是:{lines}")
  12. # 读取文件 -readline()
  13. line1=f.readline()
  14. line2=f.readline()
  15. line3=f.readline()
  16. print(f"第一行的内容是:{line1}")
  17. print(f"第二行的内容是:{line2}")
  18. print(f"第三行的内容是:{line3}")
  19. # for循环读取文件行
  20. for line in f.read():
  21. print(line,end="")
  22. for line in f:
  23. print(line)
  24. # 文件的关闭
  25. f.close()
  26. # with open 语法的操作文件
  27. with open("D:\测试.txt","r",encoding="UTF-8") as f:
  28. for line in f:
  29. print(line)

打开文件的方式

  • open 函数默认以 只读方式 打开文件,并且返回文件对象

语法如下:

访问方式说明
r以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常
w以只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a以追加方式打开文件。如果该文件已存在,文件指针将会放在文件的末尾。如果文件不存在,创建新文件进行写入
r+以读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常
w+以读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件
a+以读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入

代码演示:

  1. """
  2. 演示文件的写入操作
  3. """
  4. import time
  5. # 打开文件,不存在的文件
  6. f=open("D:/test.txt","w",encoding="UTF-8")
  7. # write写入
  8. f.write("Hello World!!")
  9. # flush刷新
  10. # f.flush()
  11. # close关闭
  12. f.close() # close内置了flush功能
  13. # 打开一个存在的文件
  14. f=open("D:/test.txt","w",encoding="UTF-8")
  15. # write写入,flush刷新
  16. f.write("黑马程序员")
  17. # close关闭
  18. f.close()

以追加方式打开文件:

  1. """
  2. 演示文件的追加操作
  3. """
  4. # 打开文件
  5. f=open("D:/test.txt","a",encoding="UTF-8")
  6. # write写入
  7. f.write("黑马程序员")
  8. # flush刷新
  9. f.flush()
  10. # close关闭
  11. f.close()
  12. # 打开一个存在的文件
  13. f=open("D:/test.txt","a",encoding="UTF-8")
  14. # write写入、flush刷新
  15. f.write("\n是一个非常棒的官网")
  16. f.flush()
  17. # close关闭
  18. f.close()

按行读取文件内容

  • read 方法默认会把文件的 所有内容一次性读取到内存
  • 如果文件太大,对内存的占用会非常严重

readline 方法

  • readline 方法可以一次读取一行内容
  • 方法执行后,会把文件指针移动到下一行,准备再次读取

代码演示:

  1. # 读取文件 -readlines()
  2. lines=f.readlines()
  3. print(f"lines对象的类型是:{type(lines)}")
  4. print(f"lines对象的内容是:{lines}")
  5. # 读取文件 -readline()
  6. line1=f.readline()
  7. line2=f.readline()
  8. line3=f.readline()
  9. print(f"第一行的内容是:{line1}")
  10. print(f"第二行的内容是:{line2}")
  11. print(f"第三行的内容是:{line3}")

课后小练习:

1,单词计数

通过Windows的文本编辑器软件,将如下内容复制保存到:word.txt,文件可以存储在任意位置

通过文件读取操作,读取此文本,统计itheima单词出现的次数

  1. # 打开文件,一读取模式打开
  2. f=open("D:/word.txt","r",encoding="UTF-8")
  3. # 方式1:读取全部内容,通过字符串count方法统计单词itheima的个数
  4. content=f.read()
  5. count=content.count("itheima")
  6. print(f"ieheima一共出现了{count}次")
  7. # 方式2:读取内容,一行一行读取
  8. count=0
  9. for line in f:
  10. line=line.strip()
  11. words=line.split(" ")
  12. for word in words:
  13. if word=="itheima":
  14. count+=1
  15. # 判断单词出现次数并累计
  16. print(f"ieheima一共出现了{count}次")
  17. # 关闭文件
  18. # f.close()

 2,需求:有一份账单文件,记录了消费收入的具体记录,内容如下:

可以将内容复制并保存为bill.txt

代码如下:

  1. # 打开文件得到文件对象,准备读取
  2. fr=open("D:/bill.txt","r",encoding="UTF-8")
  3. # 打开文件得到文件对象,准备写入
  4. fw=open("D:/bill.txt.bak","w",encoding="UTF-8")
  5. # for循环读取文件
  6. for line in fr:
  7. line = line.strip()
  8. # 判断内容,将满足的内容写出
  9. if line.split(",")[4]=="测试":
  10. continue # continue进入下一次循环,这一次后面的内容就跳过了
  11. # 将内容写出去
  12. fw.write(line)
  13. # 由于前面对内容进行了strip操作,所以要手动的写出换行
  14. fw.write("\n")
  15. # close2个文件对象
  16. fw.close()
  17. fr.close()

运行结果:

 

 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号