使用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发送email的3种方法
Apr 28 Python
Python中的字典与成员运算符初步探究
Oct 13 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
使用Python写CUDA程序的方法
Mar 27 Python
使用python3+xlrd解析Excel的实例
May 04 Python
python3 判断列表是一个空列表的方法
May 04 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
Python中创建二维数组
Oct 17 Python
django主动抛出403异常的方法详解
Jan 04 Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 Python
用Python画小女孩放风筝的示例
Nov 23 Python
pycharm 的Structure界面设置操作
Feb 05 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中的正则表达式
2014/08/17 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
php微信开发之图片回复功能
2018/06/14 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
一个选择最快的服务器转向代码
2009/04/27 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
2013/12/27 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
python 网络爬虫初级实现代码
2016/02/27 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
python生成圆形图片的方法
2020/03/25 Python
python使用matplotlib画饼状图
2018/09/25 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
python多进程使用函数封装实例
2020/05/02 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
澳大利亚牛仔裤商店:Just Jeans
2016/10/13 全球购物
PHP面试题及答案一
2012/06/18 面试题
户籍证明模板
2014/09/28 职场文书
群众路线个人整改方案
2014/10/25 职场文书
项目安全员岗位职责
2015/02/15 职场文书
污水处理保证书
2015/05/09 职场文书
惊天动地观后感
2015/06/10 职场文书
《角的度量》教学反思
2016/02/18 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS