Python学习_06_文件、IO
文件对象
python中的文件操作和c语言比较类似,包括一些缓冲、偏移量的方式。
文件对象可以通过open()、file()两个内建方法创建,两个方法并没有什么不同,使用方法和c语言中的fopen()类似:
file_object = open(file_name, access_mode=‘r’, buffering=-1)
其中access_mode表示打开方式,r表示只读,w表示只写,r+,w+表示读写,a表示追加等;buffering表示缓冲方式,负值表示默认缓冲方式,0表示不缓冲,1表示行缓冲,大于1的值表示缓冲区的大小,一般情况下使用默认缓冲即可。
在perl中经常会用到管道的方式,通过open IN,”gunzip -cd $gzfile|” or die $!; 的方式轻松实现从压缩文件中读取内容,python中也可以通过os.popen()实现管道操作,注意的是,最后一层管道的|需要省略,因为popen()默认就是从管道中读取。
文件输入:
1. read()方法,指定读取一定个数的字节到字符串中,如果不指定字节或者为负值,则读取所有的内容;
2. readline()方法,读取一行内容,如果指定的参数size小于一行长度,则只返回 size个字节到字符串中;
3. readlines()方法,会读取所有的行并且返回一个字符串列表,可选参数代表返回的最大字节数,但是仍然需要凑齐缓冲区大小;
使用迭代器,并且配合for循环和readline()方法,是比较好的输入方式:
for line in file_object.readline():
print line
文件输出:
1. write()方法,像文件写入字符串
2. writelines()方法,将一个字符串列表写入到文件,或者是返回字符串的可迭代对象
文件偏移量:
1. tell()方法可以返回当前在文件中的位置
2. seek(offset, whence=0)方法,移动文件中的指针,whence=0表示从文件开始位置移动offset个偏移量,1表示从当前位置移动offset个偏移量,2表示从文件末尾移动offset个偏移量
内建方法:
file.close():关闭文件句柄,并且将缓冲区的内容写入到文件中
file.fileno():返回文件描述符;
file.flush():立即刷新文件缓冲区
内建属性:
file.name:文件名,file.mode:文件打开方式,file.encoding:文件编码方式,file.closed:文件是否被关闭等
标准输入输出错误流:
sys模块中可以通过sys.stdin,sys.stdout,sys.syderr访问标准输入输出错误流,内建方法raw_input()通常从sys.stdin接收输入
sys模块还可以通过sys.argv属性来访问环境参数,argv[0]为脚本本身
文件系统
在os模块中包含操作系统功能的主要接口,包括文件的相关操作:
os.getcwd():返回当前工作目录,os.listdir():列出指定目录下的相关文件(包括子目录),chdir():改变当前目录,symlink():创建符号链接,remove():删除文件,rename():重命名文件
os.path 模块中的路径相关操作:
os.path.basename:返回文件名,dirname():返回目录名,split():返回(dirname(),basename())元组,get*time():返回各种事件,getsize()返回文件大小,exists():指定路径是否存在,isdir():是否存在指定路径且为一个目录,isfile():指定目录是否存在且为一个文件等等
其他相关模块
bz2、csv、gzip/zlib、tarfile、zipfile等
Python学习_06_文件、IO的更多相关文章
- python学习9—文件基本操作与高级操作
python学习9—文件基本操作与高级操作 1. 文件基本操作 打开文件,获得文件句柄:f = open('filename',encoding='utf-8'),open会查询操作系统的编码方式,并 ...
- Python学习--13 文件I/O
Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系 ...
- python学习总结---文件操作
# 文件操作 ### 目录管理(os) - 示例 ```python # 执行系统命令 # 清屏 # os.system('cls') # 调出计算器 # os.system('calc') # 查看 ...
- [Python学习笔记]文件的读取写入
文件与文件路径 路径合成 os.path.join() 在Windows上,路径中以倒斜杠作为文件夹之间的分隔符,Linux或OS X中则是正斜杠.如果想要程序正确运行于所有操作系统上,就必须要处理这 ...
- Linux学习记录--文件IO操作相关系统编程
文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...
- python学习笔记:文件操作和集合(转)
转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...
- python学习——大文件分割与合并
在平常的生活中,我们会遇到下面这样的情况: 你下载了一个比较大型的游戏(假设有10G),现在想跟你的同学一起玩,你需要把这个游戏拷贝给他. 然后现在有一个问题是文件太大(我们不考虑你有移动硬盘什么的情 ...
- python学习之文件读写,序列化(json,pickle,shelve)
python基础 文件读写 凡是读写文件,所有格式类型都是字符串形式传输 只读模式(默认) r f=open('a.txt','r')#文件不存在会报错 print(f.read())#获取到文件所 ...
- python学习8 文件的操作
本文拷贝了on testing 的<python之文件操作:文件的读写>,只做学习之用 python的文件读写通过 一.用open函数 二.对文件读写操作 三.读取文件位置定位 1. op ...
随机推荐
- Nginx实现https网站配置
咱们下面以google代理实现的方式来实现https.注意这里的https与google的https无关. 代码如下.有备注/usr/local/nginx/config/vhost/hk.cn331 ...
- ElasticSearch 学习记录之 分布式文档存储往ES中存数据和取数据的原理
分布式文档存储 ES分布式特性 屏蔽了分布式系统的复杂性 集群内的原理 垂直扩容和水平扩容 真正的扩容能力是来自于水平扩容–为集群添加更多的节点,并且将负载压力和稳定性分散到这些节点中 ES集群特点 ...
- 剑指 offer代码解析——面试题39推断平衡二叉树
题目:输入一颗二叉树的根结点.推断该树是不是平衡二叉树. 假设某二叉树中随意结点的左右子树的高度相差不超过1,那么它就是一棵平衡二叉树. 分析:所谓平衡二叉树就是要确保每一个结点的左子树与右子树的高度 ...
- eclipse 鲜为人知的调试技巧,你用过多少
今天在OSChina上看到了篇调试技巧,的确对于调试非常有帮助,而且大部分我们都没实用过,我们常常使用的调试是F5678四个键,假设你还想提高调试效率你能够尝试着用一用,写过代码做过项目的人都知道调试 ...
- cxf,两个声明导致 ObjectFactory 类中发生冲突
说明先,这里不管是client还是server端都是用java语言编写,如有写得不好,望原谅! 问题 http://localhost:8080/WEB-SMVC/cxf/userService?ws ...
- jquery查找元素
一:查找元素 * 所有元素 element 该名称的所有元素(p,input) #id 拥有指定id属性的元素 .class 拥有所有指定class属性的元素 selector1,selector2 ...
- Caused by: java.net.SocketException: Broken pipe
异常信息 时间:2017-03-24 17:22:16,719 - 级别:[ WARN] - 消息: [other] The web application [ROOT] appears to hav ...
- TypeScript学习笔记之基础类型
从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧: typescript最新版本2.6,所有演示代码均基于此版本 开始之前确定安装了如下n ...
- 怎样在Spark、Flink应用中使用Protobuf 3的包
如果在在Spark.Flink应用中使用Protobuf 3的包,因为Spark默认使用的是2.5版本的包,提交任务时,可能会报如下异常: com.google.protobuf.CodedInput ...
- Laravel学习笔记(一)
根据国外的调查,Laravel是最流行的框架,最近公司需要PHP的开发人员,但是一直招不到人,只好亲自上阵研究一下.由于以前对PHP只是大致了解,这次学习开始的时候也挺挠头的,到今天稍微入了 ...