使用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 相关文章推荐
50行代码实现贪吃蛇(具体思路及代码)
Apr 27 Python
linux环境下安装pyramid和新建项目的步骤
Nov 27 Python
python函数局部变量用法实例分析
Aug 04 Python
python 队列详解及实例代码
Oct 18 Python
Pipenv一键搭建python虚拟环境的方法
May 22 Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 Python
Python类中方法getitem和getattr详解
Aug 30 Python
Django 框架模型操作入门教程
Nov 05 Python
用python求一重积分和二重积分的例子
Dec 06 Python
Python3和pyqt5实现控件数据动态显示方式
Dec 13 Python
Matplotlib使用字符串代替变量绘制散点图的方法
Feb 17 Python
Python通过fnmatch模块实现文件名匹配
Sep 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
php4的彩蛋
2006/10/09 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
jQuery弹出窗口简单实现代码
2017/03/09 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
javascript实现倒计时关闭广告
2021/02/09 Javascript
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
在Python中表示一个对象的方法
2019/06/25 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
xxx同志考察材料
2014/02/07 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
学习党代会心得体会
2014/09/05 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
拾金不昧表扬信
2015/01/16 职场文书
如何写辞职信
2015/05/13 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
Python基础之元编程知识总结
2021/05/23 Python
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle