python中文件的读和写操作
一、打开文件
data = open("yesterday",encoding="utf-8").read()
# python默认的打字符编码是unicode,处理不了gbk,但是utf—8可以
print(data)
ps:这边的yesterday文件是一首英文歌的歌词
在打开的时候,一定要转码,否则会乱码:encoding="utf-8"
二、读取前几行
会用到read( )和readline( )方法
f = open("yesterday",encoding="utf-8") # 文件句柄,方法和1类似
# data = f.read() # 光标在最后面
# print(data)
# f.readline() # 读取一行,只适合读小文件
for i in range(5):
print(f.readline()) # 循环之后读取四行
三、读取前几行(优化版)
用到了迭代器,所以不会像二一样占用太大的内存,最后只会占用一行的内存
f = open("yesterday",encoding="utf-8")
# 实现前九行的输入,并且在第九行输入分割线
count = 0
for line in f:
if count == 9:
print("--------分割线-------")
count += 1
continue
print(line) # 迭代器!效率最高的循环方式,比2效率高是因为读完一行就删一行
count +=1
四、关于文件的方法
python不是直接调用所有文件,而是调用操作系统的接口I/O,通过接口来调用文件
# 1.tell()方法:光标的位置
f = open("yesterday",encoding="utf-8")
print("1:",f.tell()) # 把指针的位置表示出来,0
print("2:",f.readline())
print("3:",f.tell()) # 读完一行字符之后光标的位置
print("4:",f.readline(3))
print("5:",f.tell()) # 读完三行字符之后光标的位置
#2.seek()方法: 光标回到第几行
f.seek(0)
print("6:",f.tell()) # 光标重新回到了开始
# 3.encoding # 打印文件的编码类型
print("7:",f.encoding)
# 4.fileno() 可用于底层操作系统的 I/O接口操作。
print("8:",f.fileno())
# 5.flush()
print(f.flush()) # 实时刷新文件内容
其实在学习python基础的时候,pycharm的联想功能非常重要!
小福利:
打开文件的模式有:
r,只读模式(默认)。
w,只写模式。【不可读;不存在则创建;存在则删除内容;】
a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
“+” 表示可以同时读写某个文件
r+,可读写文件。【可读;可写;可追加】
w+,写读
a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
rU
r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)一般是在跨平台的时候需要处理二进制文件,比如Windows到linux;视频文件也需要处理二进制文件
rb —读,以二进制模式打开,此时不需要即encoding,
wb—写,此时需要加入encoding
ab
本人目前在学习python、前端、数据库和linux相关的内容,故打算写一些学习笔记,包括安装软件遇到的一些问题、编程语言的学习。 学习如逆水行舟,你在原地踏步的同时,别人一直在前进!