1.函数复习

# map
# l = [1,2,3,4,5]
# print(list(map(str,l))) # reduce
# l = [1,2,3,4,5]
# from functools import reduce
# print(reduce(lambda x,y:x+y,l,3)) #初始值是3. # filter
# name=['ray_sb','ray']
# res=filter(lambda x:x.endswith('sb'),name)
# # res=filter(lambda x:not x.endswith('sb'),name) #不包含
# print(res)
# print(list(res))

2.文件处理b模式(二进制处理)

1.文件默认处理是文本方式,但是视频,图片之类的只能用二进制处理
2.文件最终处理方式是二进制,所以二进制可以跨平台
3.b模式对linux没什么用,因为linux就是二进制处理,对windows有用

# f=open('test11.py','rb',encoding='utf-8') #b的方式不能指定编码
# f=open('test11.py','rb') #b的方式不能指定编码
# data=f.read()
# 编码:'字符串'---------encode---------》bytes
# 解码:bytes---------decode---------》'字符串'
# print(data)
# print(data.decode('utf-8'))
# f.close() # f=open('test22.py','wb') #b的方式不能指定编码
# f.write(bytes('1111\n',encoding='utf-8'))
# f.write('星空月零'.encode('utf-8')) # f=open('test22.py','ab') #b的方式不能指定编码
# f.write('星空月零'.encode('utf-8')) # open('a;ltxt','wt')
# 1.文件默认处理是文本方式,但是视频,图片之类的只能用二进制处理
# 2.文件最终处理方式是二进制,所以二进制可以跨平台
# 3.b模式对linux没什么用,因为linux就是二进制处理,对windows有用

 3.文件操作其他方法

# f.flush() #讲文件内容从内存刷到硬盘
#
# f.closed #文件如果关闭则返回True
#
# f.encoding #查看使用open打开文件的编码
# f.tell() #查看文件处理当前的光标位置
#
# f.seek(3) #从开头开始算,将光标移动到第三个字节
# f.truncate(10) #从开头开始算,将文件只保留从0-10个字节的内容,文件必须以写方式打开,但是w和w+除外

用seek方法的相对模式时必须以b的方式打开

# f=open('seek.txt','r',encoding='utf-8')
# print(f.tell())
# f.seek(10)
# print(f.tell())
# f.seek(3)
# print(f.tell()) # f=open('seek.txt','rb')
# print(f.tell())
# f.seek(10,1)
# print(f.tell())
# f.seek(3,1)
# print(f.tell()) # f=open('seek.txt','rb')
# print(f.tell())
# f.seek(-5,2)
# print(f.read())
# print(f.tell())
# f.seek(3,1)
# print(f.tell())

文件读取

因为readlines()是把文件从头读到尾,耗费资源,所以用循环的方式好。

# f=open('日志文件','rb')
# data=f.readlines()
# print(data[-1].decode('utf-8')) f=open('日志文件','rb') # for i in f.readlines():
# print(i) #循环文件的推荐方式
# for i in f:
# print(i)

文件读取demo:读取日志文件的最后一行

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

18.函数复习,文件处理b模式(二进制处理),文件处理其他高级玩法的更多相关文章

  1. zabbix高级玩法之通过xml文件一次性导入

    author:headsen  chen date: 2018-11-10  10:08:38 背景:zabbix的硬件监控架构已经部署完成,接下来就是创建主机这一步,2400台主机如果采用一台台的创 ...

  2. mysql删除二进制日志文件

    一.RESET MASTER 这个语句可以验证首次配置主机备机是否成功.步骤如下: 1. 启动master和 slave,开启replication (即 复制) 注:replication (复制) ...

  3. python—— 文件的打开模式和文件对象方法 & os、os.path 模块中关于文件、目录常用的函数使用方法

    引用自“鱼c工作室”     文件的打开模式和文件对象方法  : https://fishc.com.cn/forum.php?mod=viewthread&tid=45279&ext ...

  4. day08文件操作的三步骤,基础的读,基础的写,with...open语法,文件的操作模式,文件的操作编码问题,文件的复制,游标操作

    复习 ''' 类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-.5 ...

  5. Linux下c函数dlopen实现加载动态库so文件代码举例

    dlopen()是一个强大的库函数.该函数将打开一个新库,并把它装入内存.该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的.这种机制使得在系统中添加或者删除一个模块时,都不需要重新编译了. ...

  6. python文件处理b模式

    执行环境:windows+Python3.51.rb模式,从文件中读取内容,得到的是bytes类型 因为我们使用的是b模式,所以在open函数中不能指定编码格式,所以打印出来的格式的二进制的格式,而我 ...

  7. 巧用AWK处理二进制数据文件

    AWK是Unix下的一款功能强大的文本格式化和抽取工具.利用这个工具,可以对复杂的文本文件进行整理,提取其中的全部或者部分数据,按照需要的格式予以显示.需要说明的是,AWK的强大功能只针对纯文本文件. ...

  8. ELF二进制目标文件详解

    以下内容为<<linux内核编程>>笔记 链接程序 找出所有引用的外部模块并链接起来,这些外部模块或函数库一般来自于开发者,操作系统和C运行库. 链接程序取出这些函数库,修订指 ...

  9. JavaScript 二进制转文件

    关于在javascript下,如何将二进制转换成相应的文件并下载. 首先, 我们需要得到二进制的数据以及相应的文件格式,没有相应的格式也可以,可以通过二进制来判断,但相对会麻烦很多,所以建议可以要求后 ...

随机推荐

  1. oracle copy

    用法: COPY FROM <db> TO <db> <opt> <table> {(<cols>)} USING <sel> ...

  2. 阿里云异构计算发布:轻量级GPU云服务器实例VGN5i

    阿里云发布了国内首个公共云上的轻量级GPU异构计算产品——VGN5i实例,该实例打破了传统直通模式的局限,可以提供比单颗物理GPU更细粒度的服务,从而让客户以更低成本.更高弹性开展业务.适用于云游戏. ...

  3. linux下安装使用MySQL 以及 python mysqldb 遇到的问题

    一.安装mysql sudo apt-get install mysql-client-core-5.5 然后会出现: ERROR 2002 (HY000): Can't connect to loc ...

  4. cume_dist(),允许并列名次、复制名次自动空缺,取并列后较大名次,结果如22355778……

    将score按ID分组排名:cume_dist() over(partition by id order by score desc)*sum(1) over(partition by id) 将sc ...

  5. 怎么查看mysql 的binlog日志存放的位置

    image.png 这个你可以看配置文件 启用了才有这样的记录默认是没有的 linux系统中的/etc/my.cnf my.cnf内容: log-bin = mysqlbin # 默认配置 一般放在/ ...

  6. 2019-8-31-dotnet-core-黑科技·String.IndexOf-性能

    title author date CreateTime categories dotnet core 黑科技·String.IndexOf 性能 lindexi 2019-08-31 16:55:5 ...

  7. laravel5.*安装使用Redis以及解决Class 'Predis\Client' not found和Fatal error: Non-static method Redis::set() cannot be called statically错误

    https://phpartisan.cn/news/35.html laravel中我们可以很简单的使用Redis,如何在服务器安装Redis以及原创访问你们可以访问Ubuntu 设置Redis密码 ...

  8. JS精度问题,解决方案 math.js

    JS精度问题    Vue中使用 解决方案 math.js npm install mathjs import { create, all } from 'mathjs' const config = ...

  9. linux的iptables和firewall的区别

    firewall是centos7里面的新的防火墙命令,它底层还是使用 iptables 对内核命令动态通信包过滤的,简单理解就是firewall是centos7下管理iptables的新命令 Linu ...

  10. 蝶式套利(butterfly spread)

    多头蝶式套利.预期市场价格趋于稳定,希望在这个价格区间内能获利,可选用多头蝶式套利,以较低的议定价格买进一个看涨期权,又以较高的议定价格买进一个看涨期权,同时又以介于上述2个议定价格之间的中等的议定价 ...