python-读写文件

来源:互联网 发布:php 输出时间戳 编辑:程序博客网 时间:2024/05/16 04:42

1.打开文件:

1.1 open(…)
open(file, mode=’r’, buffering=-1, encoding=None,errors=None, newline=None,closed=True) -> file object

使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件

f=open("file.txt")

由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try … finally来实现:

try:    f = open('/path/to/file', 'r')    print f.read()finally:    if f:        f.close()

但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

with open('/path/to/file', 'r') as f:    print f.read()

这和前面的try … finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。
1.2 file的属性
closed #标记文件是否已经关闭,由close()改写
encoding #文件编码
mode #打开模式
name #文件名
newlines #文件中用到的换行模式,是一个tuple
softspace #boolean型,一般为0,据说用于print
打开文件,返回流;失败会抛出IOError异常

2.打开方式:

2.1 mode=
‘r’ open for reading (default) 以读方式打开(默认)
‘w’ open for writing, truncating the file first 以写方式打开,先裁文件(必要时创建新文件)
‘a’ open for writing, appending to the end of the file if it exists 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
‘b’ binary mode 二进制模式
‘t’ text mode (default) 文本模式(默认)
‘+’ open a disk file for updating (reading and writing) 以读写方式打开
‘U’ universal newline mode (for backwards compatibility; unneeded
for new code) 支持所有的换行模式,也就说‘/r’ ‘/n’ ‘/r/n’都可表示换行(为了向后兼容,新代码没必要)

2.2.注意事项
问:+表示可读可写,那么r+模式和w+模式有什么区别吗?
答:r+:可读可写,若文件不存在,报错;
w+: 可读可写,若文件不存在,创建。

3.file的读写方法:

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的内容全部写到文件中。这个函数也只是忠实地写入,不会在每行后面加上任何东西。

4.例子

#initial sum_click_dictwith open('click.txt', 'r') as f:        for line in f:                line_list=line.strip().split(':')                sum_click_dict[line_list[0]]=int(line_list[1])

参考:

廖雪峰的官方网站:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820066616a77f826d876b46b9ac34cb5f34374f7a000
python 中open()文件操作的方式 :
http://blog.163.com/loveyangmao@126/blog/static/6967414320111024000834/

http://www.educity.cn/wenda/352188.html

http://www.cnblogs.com/allenblogs/archive/2010/09/13/1824842.html

http://www.cnblogs.com/ylan2009/articles/2382868.html

0 0
原创粉丝点击