十四、python沉淀之路--文件操作
一、文件操作b模式
1、
# f = open('test11.py','rb',encoding='utf-8') # 这种情况会报错
f = open('test11.py','rb') # b 模式不能指定编码方式
data = f.read()
print('直接打印出来:',data)
print('解码打印\n',data.decode('utf-8'))
f.close()
直接打印出来: b'11111\r\n22222\r\n3333\r\n'
解码打印
11111
22222
3333
总结:字符串 -------encoding ------->> bytes
bytes --------decode --------->> 字符串
例2
f = open('test22.py','wb')
f.write(bytes('99999\n',encoding='utf-8'))
f.write('北京'.encode('utf-8'))
f.close()
f1 = open('test22.py','br')
data = f1.read()
print('原码打印',data)
print('解码打印\n',data.decode('utf-8'))
f1.close()
原码打印 b'99999\n\xe5\x8c\x97\xe4\xba\xac'
解码打印
99999
北京
注:原码打印和解码打印的区别,写文件前,即在打开的时候不能指定编码格式。只有在写的时候才指定编码格式。
二、文件操作
1、
f = open('练习.txt',"r+",encoding='utf-8')
print(f.read())
f.write('1234556789\n')
print(f.read())
f.close()
1234556789
2、closed,encoding, flush(),readlinse() 的使用
f = open('练习.txt',"r+",encoding='utf-8',newline='')
print(f.closed) # closed 判断文件是否关闭
print(f.encoding) # 检查是哪种编码格式
f.flush() # 写完内容后是暂时存在了缓存里面,通过flush()函数冲刷一下,就将内容保存在了内存、# f.flush() #讲文件内容从内存刷到硬盘
print(f.readlines()) #将所有内容以列表形式打印出来,
False
utf-8
['\r\n', '1234556789\r\n', '1234556789\r\n']
3、tell的使用,打印当前所在位置
f = open('练习.txt',"r+",encoding='utf-8',newline='')
print(f.tell())
print(f.readline()) # 因为12345 后还有\r\n,没有显示出来
print(f.tell())
4、seek的使用,(是以字节为单位的)
f = open('练习.txt',"r+",encoding='utf-8',newline='')
f.write('my name is cainiao who is from earth')
f.close()
f1 = open('练习.txt','r+',encoding='utf-8')
print(f1.read())
f1.seek(3,0) #“0”代表从文件开头开始偏移,偏移3个单位
print(f1.tell())
print(f1.read(3))
print(f1.read(6)) #从偏移之后的指针所指的位置,开始读取6个字符
print(f1.tell())
print(f1.readline())
# print('看看是否到了最后:',f1.read(5))
print(f1.seek(5,0))
print(f1.seek(3,1))
print(f1.seek(0,2)) #“2”代表从末尾算起,“0”代表偏移0个单位
nam
print(f1.seek(3,1))
e is c
io.UnsupportedOperation: can't do nonzero cur-relative seeks
12
ainiao who is from earth
5
5、读取大文件中最后一行
f=open('练习.txt','rb')
for i in f:
offs=-10
while True:
f.seek(offs,2)
data=f.readlines()
if len(data) > 1:
print('文件的最后一行是%s' %(data[-1].decode('utf-8')))
break
offs*=2
十四、python沉淀之路--文件操作的更多相关文章
- 十三、python沉淀之路--文件操作
一.文件的读操作 例1 f = open('学习',encoding='utf-8') #首先要打开文件,不然直接读,是读不出来的 data = f.read() #read后的括号里不添加任何东西 ...
- Python学习之路——文件操作
文件操作分三步:打开文件,读写文件,关闭文件.读取操作时没有给read函数加括号,会出现下面这样的车祸 >>> data = open('/home/supersun/Documen ...
- Python修炼之路-文件操作
Python编程之文件操作 文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 每次文件打开.读取信息时,Python自动记录所达到的位置,好比一个书签,之后每一次 ...
- 十、python沉淀之路--高阶函数初识
一.高阶函数:分两种:一种是返回值中包含函数体:另一种是把一个函数体当作了参数传给了另一个函数 1.返回值中包含函数体 例1. def test(): print('这是一个测试') return t ...
- 二十四. Python基础(24)--封装
二十四. Python基础(24)--封装 ● 知识结构 ● 类属性和__slots__属性 class Student(object): grade = 3 # 也可以写在__slots ...
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...
- 十四. Python基础(14)--递归
十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...
- Python之路----文件操作
文件操作 1.能调用方法的一定是对象,比如数值.字符串.列表.元组.字典,甚至文件也是对象,Python中一切皆为对象. str1 = 'hello' str2 = 'world' str3 = ' ...
随机推荐
- C++中的内存区[译文]
C++ 中的内存区 Const Data: The const data area stores string literals and other data whose values are kno ...
- 关于全志A20的Ubuntu12.04 64位系统下环境配置及编译过程笔记【转】
本文转载自:https://blog.csdn.net/buqingbuyuan/article/details/43370199 在安装Ubuntu系统之后,安装编译所需的GCC等工具,一般选用GC ...
- thinkPHP中怎么使用阿里云的sdk
使用阿里云官方给的方法总会报错 Class 'Home\Controller\DefaultProfile' not found 这样是因为namespace的原因,将aliyun sdk 放在con ...
- GridView右键菜单
一.添加右键菜单 1.在VS工具箱中的“菜单和工具栏”找到ContextMenuStrip控件,双击添加. 2.点击ContextMenuStrip右上方的小三角形,打开编辑项,可以添加菜单项.至于菜 ...
- HashMap和ConcurrentHashMap和HashTable的底层原理与剖析
HashMap 可以允许key为null,value为null,但HashMap的是线程不安全的 HashMap 底层是数组 + 链表的数据结构 在jdk 1.7 中 map集合中的每一项都是一个 ...
- Java 如何解析由String类型拼接的XML格式
String xml = new String(a);打印的xml 的值是 <?xml version= 1.0 encoding=gb2312?><weighData>< ...
- js进阶---12-11、jquery如何给动态创建出来的元素绑定事件
js进阶---12-11.jquery如何给动态创建出来的元素绑定事件 一.总结 一句话总结:通过事件委托的方式,通过on方法 1.on方法在事件绑定的时候,data方式带额外参数时,字符串参数和其它 ...
- Div层弹出
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- mysql数据库(三):查询的其他用法
一. 查询—IN的用法 语法:select ... from 表名 where 字段 a in (值b, 值c, 值d...) 等价于 select ... from 表名 where 字段a=值b ...
- MacOS Docker安装
Docker简介: Docker 是一个开源的应用容器引擎 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. ...