使用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中PDB模块中的命令来调试Python代码的教程
Mar 30 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
Python 爬虫爬取指定博客的所有文章
Feb 17 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
Jun 20 Python
Python基于回溯法子集树模板解决m着色问题示例
Sep 07 Python
基于python内置函数与匿名函数详解
Jan 09 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
Python打包方法Pyinstaller的使用
Oct 09 Python
python 图片去噪的方法示例
Jul 09 Python
浅析python中while循环和for循环
Nov 19 Python
Django中Q查询及Q()对象 F查询及F()对象用法
Jul 09 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
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
PHP7新特性
2021/03/09 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
Python 3 判断2个字典相同
2019/08/06 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
校本教研工作制度
2014/01/22 职场文书
考试违纪检讨书
2014/02/02 职场文书
大型晚会策划方案
2014/02/06 职场文书
幼儿园元旦亲子活动方案
2014/02/17 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
个人租房协议书
2014/11/28 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android
vue实现在data里引入相对路径
2022/06/05 Vue.js