VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • python基础(10):文件操作

1. 初识文件操作

使⽤python来读写⽂件是非常简单的操作。我们使⽤open()函数来打开⼀个⽂件,获取到⽂
件句柄,然后通过⽂件句柄就可以进⾏各种各样的操作了,根据打开⽅式的不同能够执⾏的操
作也会有相应的差异。
打开⽂件的⽅式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使⽤的是r(只读)模式
回到顶部(go to top)

2. 只读操作(r,rb)


	
  1. f = open("护⼠少妇嫩模.txt",mode="r", encoding="utf-8")
  2. content = f.read()
  3. print(content)
  4. f.close()
需要注意encoding表⽰编码集,根据⽂件的实际保存编码进⾏获取数据,对于我们⽽⾔,更
多的是utf-8.
rb:读取出来的数据是bytes类型,在rb模式下,不能选择encoding字符集。

	
  1. f = open("护⼠少妇嫩模.txt",mode="rb" )
  2. content = f.read()
  3. print(content)
  4. f.close()
  5. 结果:
  6. b'\xe6\xaf\x85\xe5\x93\xa5, \xe5\xa4\xaa\xe7\x99\xbd,
  7. wuse\n\xe5\x91\xb5\xe5\x91\xb5\n\xe6\x97\xa5\xe5\xa4\xa9'
rb的作⽤: 在读取非⽂本⽂件的时候,比如读取MP3、图像、视频等信息的时候就需要⽤到rb。因为这种数据是没办法直接显⽰出来的,在后⾯我们⽂件上传下载的时候还会⽤到,还有,我们看的直播,实际上都是这种数据。
绝对路径和相对路径:
1. 绝对路径:从磁盘根⽬录开始⼀直到⽂件名。
2. 相对路径:同⼀个⽂件夹下的⽂件,相对于当前这个程序所在的⽂件夹⽽⾔,如果在同
⼀个⽂件夹中,则相对路径就是这个⽂件名,如果在上⼀层⽂件夹,则要../。
我更推荐⼤家使⽤相对路径,因为在我们把程序拷⻉给别⼈使⽤的时候,直接把项⽬拷⻉走
就能运⾏,但是如果⽤绝对路径,那还需要拷⻉外部的⽂件。
读取⽂件的⽅法:

2.1 read()

read():将⽂件中的内容全部读取出来。弊端: 占内存,如果⽂件过⼤,容易导致内存崩溃。

	
  1. f = open("../def/哇擦.txt", mode="r", encoding="utf-8")
  2. content = f.read()
  3. print(content)
  4. 结果:
  5. 友谊地久天⻓,
  6. 爱⼀点,
  7. 可惜我是⽔瓶座
  8. ⼀⽣中最爱

2.2 read(n)

read(n):读取n个字符,需要注意的是,如果再次读取,那么会在当前位置继续去读⽽不
是从头读,如果使⽤的是rb模式,则读取出来的是n个字节。

	
  1. f = open("../def/哇擦.txt", mode="r" encoding="utf-8")
  2. content = f.read(3)
  3. print(content)
  4. 结果:
  5. 友谊地
  6. f = open("../def/哇擦.txt", mode="rb")
  7. content = f.read(3)
  8. print(content)
  9. 结果:
  10. b'\xe5\x8f\x8b'
  11. f = open("../def/哇擦.txt", mode="r", encoding="utf-8")
  12. content = f.read(3)
  13. content2 = f.read(3)
  14. print(content)
  15. print(content2)
  16. 结果:
  17. 友谊地
  18. 久天⻓

2.3 readline()

readline():⼀次读取⼀⾏数据。注意: readline()结尾,注意每次读取出来的数据都会有⼀
个\n,所以呢,需要我们使⽤strip()⽅法来去掉\n或者空格。

	
  1. f = open("../def/哇擦.txt", mode="r", encoding="utf-8")
  2. content = f.readline()
  3. content2 = f.readline()
  4. content3 = f.readline()
  5. content4 = f.readline()
  6. content5 = f.readline()
  7. content6 = f.readline()
  8. print(content)
  9. print(content2)
  10. print(content3)
  11. print(content4)
  12. print(content5)
  13. print(content6)
  14. 结果:
  15. 友谊地久天⻓,
  16. 爱⼀点,
  17. 可惜我是⽔瓶座
  18. ⼀⽣中最爱

2.4 readlines()

readlines():将每⼀⾏形成⼀个元素,放到⼀个列表中,将所有的内容都读取出来,所以
也是,容易出现内存崩溃的问题,不推荐使⽤。

	
  1. f = open("../def/哇擦.txt", mode="r", encoding="utf-8")
  2. lst = f.readlines()
  3. print(lst)
  4. for line in lst:
  5.   print(line.strip())

2.5 循环读取

这种⽅式是组好的,每次读取⼀⾏内容,不会产⽣内存溢出的问题。

	
  1. f = open("../def/哇擦.txt", mode="r", encoding="utf-8

相关教程