day3-3.2文件操作

File "E:/pycharm_pro/day2/file_op.py", line 2, in <module>
data=open("yesterday").read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 106: illegal multibyte sequence

修改:增加一个编码集 encoding="utf-8"

data = open("yesterday",encoding="utf-8").read()

print(data)

 

windows打开文件默认为gbk,而python打开默认为unicode,utf-8;utf-8处理不了gbk

打开文件的模式有:

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  • rU
  • r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab
# Author :Gao ling
#data=open("yesterday",encoding ="utf-8").read()#读


"""
#写
f=open("yesterday2",'w',encoding="utf-8")#文件句柄,默认为读模式r;w是创建一个新的文件,若原来存在就会覆盖原来的文件不能读,
f.write("我爱北京天安门,\n")
f.write("天安门上太阳升")
f.close()
"""

"""
#追加
f=open("yesterday2",'a',encoding="utf-8")#文件句柄,默认为读模式r;a追加,只能追加内容,不能读不能读
#a = append 追加
f.write("when i was young i listen to the radio,\n")
f.write("天安门上太阳升.........")
f.close()
"""

"""
#按行读出
f=open("yesterday",'r',encoding="utf-8")
print(f.readline())#第一行
print(f.readline())#第二行
print(f.readline())#第三行
"""

"""
#读前五行
for i in range(5):
print(f.readline())
"""


"""
f=open("yesterday",'r',encoding="utf-8")
print(f.readlines())#打印出来是一个列表
"""

"""
#打印所有
f=open("yesterday",'r',encoding="utf-8")
for line in f.readlines():
# print(line)#由于原文件每行默认自带\n,因此需要将其去掉
print(line.strip())#去掉空格和换行
"""

"""
#low loop(很少用)
#把文件循环一遍,在第十行的时候不打印
f=open("yesterday",'r',encoding="utf-8")
for index,line in enumerate(f.readlines()):
if index ==9:
print('-----我是分割线-------')
continue
print(line.strip())
"""

"""
#high loop常用
f=open("yesterday",'r',encoding="utf-8")
count=0
for line in f:#一行一行的读,并且内存中只保存一行,f为迭代器不再是列表,无法取下标
if count == 9:
print('----------我是分割线------------')
count += 1
continue
print(line)
count += 1
"""

"""
#tell打印当前位置 seek返回某位置
f=open("yesterday",'r',encoding="utf-8")
print(f.tell())#看光标在哪个字符 句柄指针指向的位置打印出来
print(f.readline())
#print(f.read(50))#可以只读5个
print(f.readline())
print(f.readline())
print(f.tell())

f.seek(0)#返回去到0位置
print(f.readline())
"""

"""
f=open("yesterday",'r',encoding="utf-8")
print(f.encoding)#打印文件编码
"""
"""
f=open("yesterday",'r',encoding="utf-8")
print(f.fileno())#返回一个编号
"""
"""
f=open("yesterday",'r',encoding="utf-8")
print(f.seekable())#终端设备文件无法返回,可以移返回true,否则返回false
"""

"""
#强制刷新
#命令行环境演示
f=open("yesterday",'w',encoding="utf-8")
f.write("hello 1\n")#发现文件中没有输入
f.flush()#发现文件中输入了
"""
"""
f=open("yesterday",'a',encoding="utf-8")
f.truncate(20)#从开始位置截断
"""

"""
#读写 常用

f=open("yesterday",'r+',encoding="utf-8")
print(f.readline())
print(f.readline())
print(f.readline())
print(f.tell())
f.write("---------diao----------")#以读和追加的形式在最后添加
print(f.readline())
"""

"""
#写读 不常用
f=open("yesterday",'w+',encoding="utf-8")
print(f.readline())
print(f.readline())
print(f.readline())
print(f.tell())
f.write("---------diao----------")#创建一个文件,再往里边写
print(f.readline())
"""
"""
#写读 不常用
f=open("yesterday",'w+',encoding="utf-8")
f.write("---------diao----------1\n")
f.write("---------diao----------1\n")
f.write("---------diao----------1\n")
f.write("---------diao----------1\n")
print(f.tell())
f.seek(10)
print(f.tell())
print(f.readline())
f.write("should be at the begining of the second one")#追加到后边
f.close()
"""

"""
#网络传输 只能用二进制
f=open("yesterday",'rb')#读二进制文件,如视频,,不需要encoding="utf-8"
print(f.readline())
"""

"""
#二进制
f=open("yesterday",'wb')
f.write("hello binary\n".encode())#字符串转化为二进制
f.close()
"""

 

posted @ 2018-01-08 20:11  灵儿三石  阅读(135)  评论(0编辑  收藏  举报