一、文件操作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沉淀之路--文件操作的更多相关文章

  1. 十三、python沉淀之路--文件操作

    一.文件的读操作 例1 f = open('学习',encoding='utf-8') #首先要打开文件,不然直接读,是读不出来的 data = f.read() #read后的括号里不添加任何东西 ...

  2. Python学习之路——文件操作

    文件操作分三步:打开文件,读写文件,关闭文件.读取操作时没有给read函数加括号,会出现下面这样的车祸 >>> data = open('/home/supersun/Documen ...

  3. Python修炼之路-文件操作

    Python编程之文件操作 文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 每次文件打开.读取信息时,Python自动记录所达到的位置,好比一个书签,之后每一次 ...

  4. 十、python沉淀之路--高阶函数初识

    一.高阶函数:分两种:一种是返回值中包含函数体:另一种是把一个函数体当作了参数传给了另一个函数 1.返回值中包含函数体 例1. def test(): print('这是一个测试') return t ...

  5. 二十四. Python基础(24)--封装

    二十四. Python基础(24)--封装 ● 知识结构   ● 类属性和__slots__属性 class Student(object):     grade = 3 # 也可以写在__slots ...

  6. python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法

    python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...

  7. 十四. Python基础(14)--递归

    十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...

  8. python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码

    python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...

  9. Python之路----文件操作

    文件操作 1.能调用方法的一定是对象,比如数值.字符串.列表.元组.字典,甚至文件也是对象,Python中一切皆为对象. str1 = 'hello' str2 = 'world' str3 = ' ...

随机推荐

  1. 介绍Web项目中用到的几款JQuery消息提示插件

    第一款 noty 官方网站:https://github.com/needim/noty 第二款 artDialog artDialog是一个精巧的web对话框组件,压缩后只有十多KB,并且不依赖其他 ...

  2. Go语言学习之运算符(The way to go)

    生命不止,继续go go go 今天介绍go中的运算符. 运算符大概分为: Arithmetic Operators Relational Operators Logical Operators Bi ...

  3. 在阿里云centos7上搭建openvpn(未成功)

    1.环境: 运行环境:阿里云 系统:centos 内核版本:-.el7.x86_64 各软件版本: iptables--.el7.x86_64 openvpn--.el7.x86_64 easy-rs ...

  4. centos 安装 mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz 详细步骤

    1.卸载Linux系统上自带的mysql插件(old版本) 查找mysql相关安装: rpm -qa|grep -i mysql 可能会出现以下的一个或多个,没有更好,说明你的系统很干净,但是以防万一 ...

  5. 初入Spring-boot(三)

    Spring boot 的运行原理 Spring boot关于自动配置的源码在spring-boot-autoconfigure-xxxx.jar内. 一.可以通过下面三种方式查看当前项目中已启用和未 ...

  6. Graph_Master(连通分量_A_双连通分量+桥)

    hdu 5409 题目大意:给出一张简单图,求对应输入的m条边,第i-th条边被删除后,哪两个点不连通(u,v,u<v),若有多解,使得u尽量大的同时v尽量小. 解题过程:拿到题面的第一反应缩点 ...

  7. Mongo, Express, Angular, Node-- MEAN Stack搭建

    前言 作为一个从后端转全栈的码农,我一直使用express,jade & bootstrap, jquery的组合.重复了几次相同的工作后,看到网上开始流行MEAN Stack,于是也对其研究 ...

  8. 使用display:table使两栏布局高度相等

    两栏布局大家应该经常用了,但是遇到坑爹的要两栏的高度对齐的话要怎么办呢? <!DOCTYPE html> <html> <head> <meta charse ...

  9. 十二道MR习题 – 1 – 排序

    题目: 一个文件,大小约为100G.文件的每一行都是一个数字,要求对文件中的所有数字进行排序. 对于这个题目,了解过Hadoop的同学可以笑而不语了.即使用spark实现也是非常简单的事情. 先说下如 ...

  10. scala学习手记2 - scala中的循环

    先来看一段Java中的循环: for (int i = 1; i < 4; i++) { System.out.print(i + ","); } 毫无疑问,scala可以让 ...