使用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发腾讯微博代码分享
Jan 10 Python
python list使用示例 list中找连续的数字
Jan 27 Python
python实现的简单RPG游戏流程实例
Jun 28 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
使用python3构建文件传输的方法
Feb 13 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 Python
详解Python实现进度条的4种方式
Jan 15 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
5款实用的python 工具推荐
Oct 13 Python
Python数据分析之pandas读取数据
Jun 02 Python
详解Python生成器和基于生成器的协程
Jun 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网上调查系统
2006/10/09 PHP
PHP+DBM的同学录程序(3)
2006/10/09 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
php实现读取手机客户端浏览器的类
2015/01/09 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
js图片处理示例代码
2014/05/12 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
2017/10/17 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
泛谈JS逻辑判断选择器 || &&
2019/05/24 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
python实现文本文件合并
2015/12/29 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
python模块导入的方法
2019/10/24 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
python logging.info在终端没输出的解决
2020/05/12 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
Python如何读取、写入CSV数据
2020/07/28 Python
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
翻译学院毕业生自荐书
2014/02/02 职场文书
社区志愿者培训方案
2014/06/10 职场文书
先进工作者推荐材料
2014/12/23 职场文书
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL