使用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之玩转字符串(2)
Sep 14 Python
Python实现一个简单的MySQL类
Jan 07 Python
Python在Console下显示文本进度条的方法
Feb 14 Python
Python编程之gui程序实现简单文件浏览器代码
Dec 08 Python
python中的随机函数random的用法示例
Jan 27 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
Python3解释器知识点总结
Feb 19 Python
关于Python作用域自学总结
Jun 10 Python
python实现数据分析与建模
Jul 11 Python
Python装饰器原理与基本用法分析
Jan 07 Python
python剪切视频与合并视频的实现
Mar 03 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的call_user_func传reference引发的思考
2010/07/23 PHP
php连接Access数据库错误及解决方法
2013/06/20 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
js实现兼容IE和FF的上下层的移动
2015/05/04 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
浅谈django的render函数的参数问题
2018/10/16 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
师范毕业生自荐信
2013/10/17 职场文书
幼儿园教师工作制度
2014/01/22 职场文书
李强为自己工作观后感
2015/06/11 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle