[Python学习笔记][第七章Python文件操作]
2016/1/30学习内容
第七章 Python文件操作
文本文件
文本文件存储的是常规字符串,通常每行以换行符’\n’结尾。
二进制文件
二进制文件把对象内容以字节串(bytes)进行存储,无法用笔记本或其他普通文本处理软件进行编辑,通常也无法被人类直接阅读和理解,需要使用专门的软件进行解码后读取,显示,修改或执行。常见的如图形图像文件,音视频文件,可执行文件,资源文件,各种数据库,Office文件都属于二进制文件
文件对象
通过open()函数即可以指定模式打开指定文件并创建文件对象
文件对象名=open(文件名[,打开方式[,缓冲区])
文件对象常用属性
文件打开模式
r
读模式
w
写模式
a
(append)追加模式
b
(bite)二进制模式(可与其他模式组合使用,用+号连接)
+
读、写模式(可与其他模式组合使用,用+号连接)
文件对象属性
close
判断文件是否关闭
mode
返回文件的打开模式
name
返回文件的名称
文件对象常用方法
flush()
把缓冲区的内容写入文件,但不关闭文件
close()
把缓冲区的内容写入文件,同时关闭文件,并释放文件对象
read(size)
从文件中读取size个字节(Py2.X)或字符(Py3.x)的内容作为结果返回,如果省略size,则一次性读取所有内容
readline()
从文本文件中读取一行内容,(如果结尾有\n则包括\n),作为结果返回
readlines()
把文本文件的每行内容作为一个字符串存入列表中,返回该列表
seek(offset[,whence])
把文件指针移动到新的位置,offset表示相对于whence的位置,whence为0表示从文件头开始计算,1表示从当前位置开始计算,2表示从文件尾开始计算,默认为0
tell()
返回文件指针的当前位置
truncate([size])
删除从当前指针位置到文件末尾的内容。如果指定了size,则不论指针在什么位置都留下钱size个字节,其余的删除
write(s)
把字符串s的内容写入文件
writelines(s)
把字符串列表写入文本文件
上下文管理关键字with
无论何种原因跳出with块,总能保证文件被正确关闭。并且可以在代码块执行完毕后自动还原进入该代码块的现场
s="Hello World"
with open('a.txt','a+') as f:
f.write(s)
二进制文件操作
pickle模块
pickle是较为常用并且速度非常快的二进制文件序列化模块
使用pickle模块写入二进制文件
.dump(变量名,文件)
import pickle
f=open('sample_pickle..data','wb')
n=7
i=13000000
a=99.056
s='中国人民 123abc'
lst=[[1,2,3],[4,5,6],[7,8,9]]
tu=(-5,10,8)
coll={4,5,6}
dic={'a':'apple','b':'banana','g':'grape','o':'orange'}
try:
pickle.dump(n,f) #表示后面将要写入的数据个数
pickle.dump(i,f)
pickle.dump(a,f)
pickle.dump(s,f)
pickle.dump(lst,f)
pickle.dump(tu,f)
pickle.dump(coll,f)
pickle.dump(dic,f)
except :
print("文件一场")
finally:
f.close()
.load(文件名)
依旧为之前的变量类型
import pickle
f=open('sample_pickle..data','rb')
n=pickle.load(f)
i=0
while i<n:
x=pickle.load(f)
print(x)
i+=1
f.close()
struct模块
struct 也是比较常用的对象序列化和二进制文件读写模块
使用struct模块写入二进制文件
import struct
n=13000000
b=True
s='ddd'
sn=struct.pack('if?',n,b,s) #把n,b,s全部转为字符串
f=open('1.dat',"wb")
f.write(sn)
f.close()
使用struct 模块读取
import struct
f=open('1.dat',"rb")
sn=f.read()
Tu=struct.unpack('if?',sn)
print(Tu)
#(13000000, 1.0, True)
n=Tu[0]
x=Tu[1]
b=Tu[2]
f.close()
文件级操作
如果需要处理文件路径,需要使用os.path模块
如果需要使用命令行读取文件内容可以使用fileinput模块
创建临时文件和文件夹可以使用tempfile模块
os与os.path模块
os模块除了提供使用操作系统功能和访问文件系统的简便方法之外,还提供了大量文件级操作的方法。
os.path模块提供了大量用于路径判断,切分,连接,以及文件夹遍历的方法
os模块常用文件操作方法
access(path,mode)
按照mode指定的权限访问文件
open(path,flags,mode=0o777,*,dir_fd=None)
按照mode指定的权限打开文件,默认权限为可读,可写,可执行
chmod(path,mode,*,dir_fd=None,follow_symlinks=True)
改变文件的访问权限
remove(path)
删除指定文件
rename(src,dst)
重命名文件或目录
stat(path)
返回文件的所有属性
fstat(path)
返回打开的文件所有属性
-listdir(path)
返回Path目录下的文件和目录列表
-startfile(filepath[,operation])
使用关联的应用程序打开指定的文件
os.path模块
-abspath(path)
返回绝对路径
-dirname(path)
返回目录的路径
-exists(path)
判断文件是否存在
-getatime(filename) getctime(filename) getmtile(filename)
返回文件的最后访问时间,创建时间,最后修改时间
-getsize
返回文件的大小
-isabs(path) isdir(path) isfile(path)
判断path是否为 绝对路径 目录 文件
-join(path,*paths)
连接两个路径
-split(path)
对路径进行分割,以列表形式返回
-splitext(path)
从路径中分割文件的扩展名
-splitdrive(path)
从路径中分割驱动器的名称
-walk(top,func,arg)
遍历目录
shutil模块
shutil模块也提供了大量的方法支持文件和文件夹的操作,详细的方法列表可以使用dir(shutil)进行查看 复制,压缩,解压等
目录操作
os和os.path还提供了大量的目录操作方法,os模块常用目录操作方法也成员如图所示,可以通过dir(os.path)查看。
mkdir(path[,mode=0777])
创建目录
makedirs(path1/path2…,mode=511)
创建多级目录
-rmdir(path)
删除目录
-removedirs(path1/path2)
删除多级目录
-getcwd()
返回当前工作目录
-get_exec_path()
返回可执行文件的搜索路径
-chdir(path)
把path设为当前工作有目录
-walk(top,topdown=True,onerror=None)
遍历目录书,该方法返回一个元组,包货三个元素。所有路径名,所有目录列表与文件列表
-sep
当前操作系统所使用的路径分隔符
-extsep
当前操作系统所使用的文件扩展名分隔符
[Python学习笔记][第七章Python文件操作]的更多相关文章
- [Python学习笔记][第四章Python字符串]
2016/1/28学习内容 第四章 Python字符串与正则表达式之字符串 编码规则 UTF-8 以1个字节表示英语字符(兼容ASCII),以3个字节表示中文及其他语言,UTF-8对全世界所有国家需要 ...
- [Python学习笔记][第五章Python函数设计与使用]
2016/1/29学习内容 第四章 Python函数设计与使用 之前的几页忘记保存了 很伤心 变量作用域 -一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将这个赋值结果反映到函数之外,可 ...
- python学习笔记-(七)python基础--集合、文件操作&函数
本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...
- python学习笔记:第8天 文件操作
目录 1. 文件操作介绍 2. 文件操作的几种方式 3. 文件的操作的方法 1. 文件操作介绍 说到操作文件我们肯定会想到流,文件的操作都是通过流来操作的.在python中文件的操作非常简单,并不像J ...
- 流畅的python学习笔记第七章:装饰器
装饰器就如名字一样,对某样事物进行装饰过后然后返回一个新的事物.就好比一个毛坯房,经过装修后,变成了精装房,但是房子还是同样的房子,但是模样变了. 我们首先来看一个函数.加入我要求出函数的运行时间.一 ...
- [Python学习笔记][第六章Python面向对象程序设计]
1月29日学习内容 Python面向对象程序设计 类的定义与使用 类定义语法 使用class关键词 class Car: def infor(self): print("This is ca ...
- python学习笔记(22)-os文件操作模块
疑问: 如果打开操作一个文件,是用绝对路径好还是相对路径好? os模块,在lib下面,可以直接引入的,直接使用import. 一.新建一个目录,新建一个文件夹 import os #新建一个文件夹 o ...
- Python 学习笔记(七)Python字符串(四)
输入输出 输入函数 raw_input (Python3:input) >>> raw_input("请输入一个字母") #获取输入内容的一个函数 请输入一个字母 ...
- Python 学习笔记(七)Python字符串(一)
字符串 字符串或串(String)是由数字.字母.下划线组成的一串字符,用双引号或单引号包裹的为字符串 1 >>> "hello world" 2 'hello ...
随机推荐
- windows系统还原
windows系统还原 windows 系统还原有两种方法: 方法一.开始-控制面板-系统和安全-备份和还原 (或者开始—所有程序—附件—系统工具—系统还原) 详细请看下面的截图说明 方法二.开机的时 ...
- 【转】iOS开发24:使用SQLite3存储和读取数据
转自:http://my.oschina.net/plumsoft/blog/57626 SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效.SQLite3使得不必将每个对象都加 ...
- Html与css基础
1.html的定义 (1).html:超文本标记语言(HyperText Markup Language),它主要包括"头"(Head)和"主体"(Body)两 ...
- AngularJS初步
AngularJS特点 遵循AMD规范 不需要操作节点 对于jquery,一般是利用现有完整的DOM,然后在这戏Dom的基础上进行二次调教了:而对于AngularJS等框架则是根据数据模型以及其对应用 ...
- Sass函数--颜色函数--Opacity函数
Opacity函数简介 在 CSS 中除了可以使用 rgba.hsla 和 transform 来控制颜色透明度之外,还可以使用 opacity 来控制,只不过前两者只是针对颜色上的透明通道做处理,而 ...
- DevExpress ASPxHtmlEditor控件格式化并导出Word (修复中文字体导出丢失)
在前台页面中先插入一个ASPxHtmlEditor控件,名为ASPxHtmlEditor1. 我用的Dev版本为14.1 格式化文本 在后台插入如下代码 1 const string css ...
- Asp.Net中JSON的序列化和反序列化-----JavaScriptSerializer ,加上自己工作心得
在工作中和手机通信用到web服务和javascriptSerializer,返回json数据,供手机端调用,一开始返回的数据是一大堆,比如 [{"word_picture9":&q ...
- iOS_SN_深浅拷贝( 百度的)_转载
文章原地址:http://www.cnblogs.com/5ishare/p/4362459.html 深浅拷贝前提是:是实现NSCopying或者NSMutableCopying协议. 浅拷贝只是复 ...
- Python一路走来 Python算法
冒泡排序: 1,2位置左右比较.大的排右边,继续比较2,3 ...... list=[5,7,2,8,12,1] #print(len(list)) for j in range(len(list)) ...
- 转载收藏之用 - 微信公众平台开发教程(四):Hello World
这一篇文章其实可以写在很前面,不过我还是希望开发者们尽多地了解清楚原理之后再下手. 通过上一篇Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证,我们已经使微 ...