使用Python读写及压缩和解压缩文件的示例


Posted in Python onJuly 08, 2016

读写文件
首先看一个例子:

f = open('thefile.txt','w')  #以写方式打开,
try:
  f.write('wokao')
finally:
  f.close()

文件的打开方式:

f = open(‘文件','mode')
‘r':只读(缺省。如果文件不存在,则抛出错误)
‘w':只写(如果文件不存在,则自动创建文件),此时无法调用f.read()方法,且当调用f.write()时,将清空文件原有内容
‘a':附加到文件末尾
‘r+':读写

如果需要以二进制方式打开文件,需要在mode后面加上字符”b”,比如”rb”,”wb”等

文件的属性:

f.closed #标记文件是否已经关闭,由close()改写
f.encoding #文件编码
f.mode #打开模式
f.name #文件名
f.newlines #文件中用到的换行模式,是一个tuple
f.softspace #boolean型,一般为0,据说用于print

文件的读写方法:

f.read([size]) #size为读取的长度,以byte为单位
f.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分
f.readlines([size]) #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分
f.write(str) #把str写到文件中,write()并不会在str后加上一个换行符
f.writelines(seq) #把seq的内容全部写到文件中。这个函数也只是忠实地写入,不会在每行后面加上任何东西
f.close() #关闭文件
f.flush() #把缓冲区的内容写入硬盘
f.fileno() #返回一个长整型的”文件标签“
f.isatty() #文件是否是一个终端设备文件(unix系统中的)
f.tell() #返回文件操作标记的当前位置,以文件的开头为原点
f.next() #返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的
f.seek(offset[,from]) #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了from参数就不一定了,from可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
f.truncate([size]) #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。

Python在读取一个文件时,会记住其在文件中的位置,如果第二次仍需要从头读取,则需要调用f.seek(0)重新从头开始读取。

一些例子:

>>> f = open('hi.txt','w')
>>> f.closed
False
>>> f.mode
'w'
>>> f.name
'hi.txt'
>>> f.encoding

压缩和解压缩文件(zip/unzip)
1,单个文件压缩成zip文件

#!/usr/bin/python
import zipfile
f = zipfile.ZipFile('archive.zip','w',zipfile.ZIP_DEFLATED)
f.write('1.py')
f.write('/root/install.log')
f.close()

仔细观察压缩以后的archive.zip,里面有一个1.py和一个root的目录,root目录下有一个install.log
ZIP_DEFLATED是压缩标志,如果使用它需要编译了zlib模块,如果仅仅是打包而不压缩的话,可以改为zipfile.ZIP_STORED

2,把zip文件解压缩

#!/usr/bin/python
import zipfile
zfile = zipfile.ZipFile('archive.zip','r')
for filename in zfile.namelist():
  data = zfile.read(filename)
  file = open(filename, 'w+b')
  file.write(data)
  file.close()

如果archive.zip里有目录,则在当前目录下也应该存在对应的目录,否则会报错。

3,把整个文件夹压缩

#!/usr/bin/python
import zipfile
import os
f = zipfile.ZipFile('archive.zip','w',zipfile.ZIP_DEFLATED)
startdir = "c:\\\\mydirectory"
for dirpath, dirnames, filenames in os.walk(startdir):
  for filename in filenames:
    f.write(os.path.join(dirpath,filename))
f.close()

如果出现:

Compression requires the (missing) zlib module

解决方法:

yum install zlib zlib-devel

,然后重新编译安装python

Python 相关文章推荐
Python基于Tkinter的HelloWorld入门实例
Jun 17 Python
Python实现大文件排序的方法
Jul 10 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
总结python爬虫抓站的实用技巧
Aug 09 Python
Python简单读取json文件功能示例
Nov 30 Python
python绘制中国大陆人口热力图
Nov 07 Python
Python定时任务随机时间执行的实现方法
Aug 14 Python
python爬虫 Pyppeteer使用方法解析
Sep 28 Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
python连接PostgreSQL过程解析
Feb 09 Python
Python requests.post方法中data与json参数区别详解
Apr 30 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 #Python
Python中使用platform模块获取系统信息的用法教程
Jul 08 #Python
Python中的os.path路径模块中的操作方法总结
Jul 07 #Python
简介Python的collections模块中defaultdict类型的用法
Jul 07 #Python
Python的collections模块中的OrderedDict有序字典
Jul 07 #Python
Python的collections模块中namedtuple结构使用示例
Jul 07 #Python
详解Python的collections模块中的deque双端队列结构
Jul 07 #Python
You might like
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
解决layer图标icon不加载的问题
2019/09/04 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
Python中字典的基础知识归纳小结
2015/08/19 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
学术会议欢迎词
2014/01/09 职场文书
暑期培训随笔感言
2014/03/10 职场文书
网站推广策划方案
2014/06/04 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
营销学习心得体会
2014/09/12 职场文书
六查六看自查报告
2014/10/14 职场文书
慈善募捐倡议书
2015/04/27 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
运动会加油稿50字
2015/07/21 职场文书