码迷,mamicode.com
首页 > 编程语言 > 详细

十四、python沉淀之路--文件操作

时间:2018-05-01 17:41:02      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:pen   字节   adl   while   报错   pytho   ati   utf-8   检查   

一、文件操作b模式

1、

1 # f = open(‘test11.py‘,‘rb‘,encoding=‘utf-8‘)  # 这种情况会报错
2 f = open(test11.py,rb)    # b 模式不能指定编码方式
3 data = f.read()
4 print(直接打印出来:,data)
5 print(解码打印\n,data.decode(utf-8))
6 f.close()
1 直接打印出来: b11111\r\n22222\r\n3333\r\n
2 解码打印
3  11111
4 22222
5 3333

总结:字符串 -------encoding ------->> bytes
           bytes --------decode --------->> 字符串

例2

 

 1 f = open(test22.py,wb)
 2 f.write(bytes(99999\n,encoding=utf-8))
 3 f.write(北京.encode(utf-8))
 4 f.close()
 5 
 6 f1 = open(test22.py,br)
 7 data = f1.read()
 8 print(原码打印,data)
 9 print(解码打印\n,data.decode(utf-8))
10 f1.close()

 

1 原码打印 b99999\n\xe5\x8c\x97\xe4\xba\xac
2 解码打印
3  99999
4 北京

注:原码打印和解码打印的区别,写文件前,即在打开的时候不能指定编码格式。只有在写的时候才指定编码格式。

二、文件操作

1、

 

 

1 f = open(练习.txt,"r+",encoding=utf-8)
2 print(f.read())
3 f.write(1234556789\n)
4 print(f.read())
5 f.close()

 

1 1234556789

2、closed,encoding, flush(),readlinse() 的使用

1 f = open(练习.txt,"r+",encoding=utf-8,newline=‘‘)
2 print(f.closed)     # closed 判断文件是否关闭
3 print(f.encoding)   # 检查是哪种编码格式
4 f.flush()           # 写完内容后是暂时存在了缓存里面,通过flush()函数冲刷一下,就将内容保存在了内存、# f.flush() #讲文件内容从内存刷到硬盘
5 print(f.readlines())  #将所有内容以列表形式打印出来,
1 False
2 utf-8
3 [\r\n, 1234556789\r\n, 1234556789\r\n]

3、tell的使用,打印当前所在位置

 

 

1 f = open(练习.txt,"r+",encoding=utf-8,newline=‘‘)
2 print(f.tell())
3 print(f.readline())     #  因为12345 后还有\r\n,没有显示出来
4 print(f.tell())

 

4、seek的使用,(是以字节为单位的)

 

 

 1 f = open(练习.txt,"r+",encoding=utf-8,newline=‘‘)
 2 f.write(my name is cainiao who is from earth)
 3 f.close()
 4 
 5 f1 = open(练习.txt,r+,encoding=utf-8)
 6 print(f1.read())
 7 
 8 f1.seek(3,0)  #“0”代表从文件开头开始偏移,偏移3个单位
 9 print(f1.tell())
10 print(f1.read(3))
11 print(f1.read(6))  #从偏移之后的指针所指的位置,开始读取6个字符
12 print(f1.tell())
13 
14 print(f1.readline())
15 # print(‘看看是否到了最后:‘,f1.read(5))
16 
17 print(f1.seek(5,0))
18 print(f1.seek(3,1))
19 print(f1.seek(0,2))  #“2”代表从末尾算起,“0”代表偏移0个单位

 

1 nam
2     print(f1.seek(3,1))
3 e is c
4 io.UnsupportedOperation: cant do nonzero cur-relative seeks
5 12
6 ainiao who is from earth
7 5

5、读取大文件中最后一行

 1 f=open(练习.txt,rb)
 2 for i in f:
 3     offs=-10
 4     while True:
 5         f.seek(offs,2)
 6         data=f.readlines()
 7         if len(data) > 1:
 8             print(文件的最后一行是%s %(data[-1].decode(utf-8)))
 9             break
10         offs*=2

 

十四、python沉淀之路--文件操作

标签:pen   字节   adl   while   报错   pytho   ati   utf-8   检查   

原文地址:https://www.cnblogs.com/jianguo221/p/8976457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!