python(1) -文件操作
很多时候我们需要对文件进行一些操作,比如读取并分析日志文件,写入日志文件等等。显然python也内置了对文件进行操作的函数。
读文件:
>>> f = open('a.log','r')
这样就打开了一个文件,’r’表示读。当然 还有其它打开方式:
‘w’ :表示写入,如果文件不存在,则创建,如果存在则覆盖
‘a’ :表示追加
>>> f.read()
'2015-12-14 15:34:57 ‘
>>> file = f.read()
>>> type(file)
<class 'str'>
read()方法可以一次读取全部文件内容,可以看出读取后返回一个字符串
>>>f.close()
文件操作完成之后,我们用close()方法关闭文件;记住使用完成之后必须关闭文件,因为文件对象占用操作系统的资源,并且操作系统同一时间打开的文件数量是有限的。
那这样每次都得关闭,会不会很麻烦,如果总是忘了关怎么办? 其实不必担心,因为python引入with语句帮我们自动关闭文件:
>>> with open('a.log','r') as f:
... f.read()
...
'2015-12-14 15:34:57 sucessful
这样就不必担心忘记关闭文件了。
read()方法一次读取所有内容,如果你的文件有十几个G,那你的内存不就装不下了吗? 所以我们可以用read(size)方法,每次读取size字节的内容。
我们还可以使用readline()和readlines()方法,
readline() 一次只读取一行
readlines() 一次加载所有内容到内存,然后按行返回
具体怎么用,问问内存兄。。
写文件:
>>> f = open('a.log','w')
>>> f.write('Good day!')
9
>>> f.close()
w是创建一个新文件,如果文件不存在,则创建,如果文件存在就会覆盖,所以千万要注意,别把有用的文件给覆盖了。
下面打开文件看一下,原来的内容还在吗?
>>> f.close()
>>> f = open('a.log','r')
>>> f.read()
'Good day!'
oh,原来的内容已经不在了,只有刚刚写入的内容!!
那我就是想往文件里继续写内容,怎么办呢?
>>> f.close()
>>> f = open('a.log','a')
>>> f.write('Good day too!')
13
打开文件看看
>>> f = open('a.log','r')
>>> f.read()
'Good day!Good day too!'
>>>
已经追加进去,但是都写在了一行,如果想另起一行的话,写入个’\n’就好了。
除了r,w,a之个,还有以下几种:
r+ : 以读写模式打开,其实跟追加的效果是一样的,能读能写
w+ : 以写读模式打开,还是会覆盖源文件
a+ : 以追加和读的模式打开
rb,wb,ab : 以二进制模式打开并处理文件,如果是非文本文件就应该用二进制模式打开,其实不加b,file也能处理二进制文件,但是涉及到跨平台时就可能有问题了,因为linux和windows的换行 标志位是不一样的,linux是’\n’,windows是’\r\n’,所以还是加上b吧。
文件其它方法:
f.mode 显示文件打开格式
f.flush() 把缓冲区中的数据刷到硬盘,当你往文件里写数据时,python会先把内容写入到内存缓冲区,等缓冲区满了再统一自动写入硬盘
f.read() 把文件一次性读入内存,文件太大时不适用
f.readline() 一次读一行内容
f.readlines() 把文件全部读入内存,并将每行转换成列表的一个元素,同样大文件时不适用
f.tell() 显示程序光标在文件中的当前位置
f.seek() 跳到指定位置,f.seek(0) 是返回文件开始
f.truncate() f.truncate(10) 从文件开头截取10个字符,超出的都删除,注意文件需要用写模式打开
>>> f = open('test.txt','r+')
>>> f.truncate(7)
7
>>> f.read()
'abcdefg'
f.writelines() 参数需要是一个列表,将一个列表中的每个元素都写入文件
>>> list = ['abcdefg','123456','!@#$%']
>>> f = open('test.txt','w')
>>> f.writelines(list)
>>> f.close()
>>> f = open('test.txt','r')
>>> f.read()
'abcdefg123456!@#$%'
f.xreadlines() 以迭代的形式循环文件,在处理大文件时效率极高,只记录文件开头和结尾,每循环一次只读一行
python(1) -文件操作的更多相关文章
- Python :open文件操作,配合read()使用!
python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...
- Python 常见文件操作的函数示例(转)
转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...
- 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容
孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...
- 孤荷凌寒自学python第三十三天python的文件操作初识
孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...
- python中文件操作的六种模式及对文件某一行进行修改的方法
一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...
- python中文件操作的其他方法
前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...
- Python常见文件操作的函数示例
# -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...
- python的文件操作及简单的用例
一.python的文件操作介绍 1.文件操作函数介绍 open() 打开一个文件 语法:open(file, mode='r', buffering=-1, encoding=None, errors ...
- python基本文件操作
python文件操作 python的文件操作相对于java复杂的IO流简单了好多,只要关心文件的读和写就行了 基本的文件操作 要注意的是,当不存在某路径的文件时,w,a模式会自动新建此文件夹,当读模式 ...
- [转]python file文件操作--内置对象open
python file文件操作--内置对象open 说明: 1. 函数功能打开一个文件,返回一个文件读写对象,然后可以对文件进行相应读写操作. 2. file参数表示的需要打开文件的相对路径(当前 ...
随机推荐
- Light oj 1234 - Harmonic Number
题目链接:http://lightoj.com/volume_showproblem.php?problem=1234 给你一个数n,让你求 这个要是直接算的话肯定TLE,要是用1e8的数组预处理存储 ...
- 439. Segment Tree Build II
最后更新 08-Jan-2017 开始介绍线段树的主要作用了,可以快速在区间查找极值,我猜是这样的..... 一个NODE的最大值取决于它左边和右边最大值里大 按个,所以,所以什么?对了,我们该用po ...
- mybatis generator配置文件
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration ...
- c/c++字符串处理大集合
rember this strncpy(a,b,5); a[5]='\0'; char a[10]; memset(a,'#',sizeof(a)); a[10]='\0'; 刚开始学C/C++时,一 ...
- mongodb 、nosql、 redis、 memcached 是什么?
mongodb 是一个基于文档的数据库,所有数据是从磁盘上进行读写的.MongoDB善长的是对无模式JSON数据的查询.而Redis是一个基于内存的键值数据库,它由C语言实现的,与Nginx/ Nod ...
- JS Math 类库介绍
下面介绍下随机生成数的常用几个API JS 随机数生成 : 在JavaScript , 提供了生成随机数的API, Math.random() 1.Math.random() : 随机生成小数 . 生 ...
- Meta键盘
由于著名的编辑器Emacs中用到Meta键,但如今大多国人所用键盘上实际并无此键,想必多有不明之处,故多方收集资料撰写此文,简要描述了Meta键及相关键盘的发展始末,至于在Emacs上如何使用国人键盘 ...
- DuiLib(三)——控件消息
上一篇讲了控件创建,这篇说说控件消息.directui的中心思想是在真实窗口之上画出所有控件,那这些控件是如何获取各自消息的? 通过第一篇的示例可以看到窗口消息的传递过程: CWindowWnd::_ ...
- Educational Codeforces Round 2 E. Lomsat gelral 启发式合并map
E. Lomsat gelral Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/600/prob ...
- ORACLE 11G用于有效期
Oracle报错,ORA-28001: 口令已经失效(转自网络) 错误信息:ORA-28001: the password has expired解决方法 Oracle11G创建用户时缺省passwo ...