使用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 相关文章推荐
在Linux中通过Python脚本访问mdb数据库的方法
May 06 Python
详解Python中最难理解的点-装饰器
Apr 03 Python
Python实现Mysql数据库连接池实例详解
Apr 11 Python
Python中正则表达式详解
May 17 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 Python
Django用户认证系统 User对象解析
Aug 02 Python
Python上下文管理器全实例详解
Nov 12 Python
python对文件的操作方法汇总
Feb 28 Python
基于Python实现下载网易音乐代码实例
Aug 10 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 Python
使用scrapy实现增量式爬取方式
Jun 21 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
截获网站title标签之家内容的例子
2006/10/09 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
Python 中的lambda函数介绍
2018/10/10 Python
python实现简单的文字识别
2018/11/27 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
Python实现中值滤波去噪方式
2019/12/18 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
机电工程专业应届生求职信
2013/10/03 职场文书
实习推荐信
2014/05/10 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
2015年中秋节主持词
2015/07/30 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
Go并发4种方法简明讲解
2022/04/06 Golang