python的文件操作
来源:互联网 发布:壁虎数据恢复破解版 编辑:程序博客网 时间:2024/06/04 08:17
文件操作是程序经常处理的对象,不同的文件有不同的格式,在我们的例子中都看做是二进制文件即可,我们的测试程序仅仅给出关于ascii编码的文件
打开文件方式
文件的打开有多种不同的模式,不同的模式处理不同,获取的文件句柄所能完成的操作也有所不同,包括”读(r)”、”写(w)”、”追加(a)”三种模式,加上一个”b”表示二进制方式,加上一个”+”表示可读写,组合起来有以下几种:
w 以写方式打开,必要时创建文件
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r 以读写模式打开,如果文件不存在将抛出异常
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )
python打开一个文件很简单,有以下两种方法:
- file(name, mode=None, buffering=None),file是一个类,支持迭代
- open(name[, mode[, buffering]]) -> file object,获取的对象与file相同
文件基本操作
下面来看一个例子,我们
- 先用’w’的方式打开一个本地磁盘上不存在的文件,写入:”Hello world!”
- 然后再用’r’的方式打开读入,文件数据并打印
- 用’a’的方式打开文件,写入”Hello File!”
- 再次打开文件读入数据并打印
代码实现如下:
__author__ = 'anys'def open_and_write(filename, mode='w', message='Hello World!'): fp = open(filename, mode) fp.write(message) fp.close()def open_and_read(filename, mode='r'): fp = open(filename, mode) data = fp.readlines() print 'read from file:%s,data:%s' % (filename, data) fp.close()if __name__ == '__main__': filename = 'test.txt' open_and_write(filename, 'w', 'Hello World!') open_and_read(filename, 'r') open_and_write(filename, 'a', 'Hello File!') open_and_read(filename, 'r')
运行结果
- 打印输出
- 文件数据
更多操作
关于文件的更多操作,可以查看file类获得,看一个例子:
def open_and_other_operate(filename, mode): fp = open(filename, mode) print 'tell:%s' % (fp.tell()) print 'iteration of file:%s' % (fp.name,) i = 1 for line in fp: print 'line %s:%s' % (i, line) i += 1 print 'tell:%s' % (fp.tell()) print 'seek to 0' fp.seek(0) print 'tell:%s' % (fp.tell()) print 'fileno:%s' % (fp.fileno(),) print 'truncate' # only when mode is w or a(for writing) # fp.truncate(10) print 'fileno:%s' % (fp.fileno(),) fp.close()
seek方法有两个参数,方法定义如下:
seek(offset[, whence]) -> None. Move to new file position.
whence是可选参数
- 默认为None(0),从文件开头算起,此时offset只能为>=0
- 1,从当前位置开始计算,offset为正,也可以为负
- 2,从文件尾计算,offset为负
通用换行符
在打开文件的模式中添加”U”以”支持通用换行符”的方式打开文件,所有的行结束符都将当成python的”\n”处理,“U”不能跟”w”、”a”和”+”组合使用,编写代码实现下面的功能:
- 打开一个文件,写入”Hello World!” + os.linesep(在windows上os.linesep为”\r\n”),在其他系统上可能是”\r”或”\n”;写入”Hello File!”+ os.linesep
- 以”r”的模式打开读入文件数据
- 以”rU”模式打开并读入文件数据
测试代码如下:
filename = 'test.txt' open_and_write(filename, 'w', 'Hello World!' + os.linesep) # open_and_read(filename, 'r') open_and_write(filename, 'a', 'Hello File!' + os.linesep) open_and_read(filename, 'r') open_and_read(filename, 'rU')
测试结果如下:
- 控制台输出,”r”方式读入的文件数据当成两行,行结束符为”\r\n”;”rU”方式读入的文件数据有四行,行结束符全部为”\n”(将”\r”,”\n”全部转换成”\n”),这也告诫我们在写入时换行就使用通用换行符”\n”
- 文件数据
我们将上面的例子再做一遍以求证,只是写入的数据行结束符由os.linesep换成”\n”,下面是测试结果: - 控制台输出,本次测试结果是两种模式打开读取的数据一致
- 文件输出,没有多余的空行了
文件的操作还有很多,如果还有更多需要欢迎留言或邮件我,我们一起成长,邮箱:cug_heshun@sina.com
- Python的文件操作
- Python的文件操作
- Python的文件操作
- python的文件操作
- python的文件操作
- Python的文件操作
- python的文件操作
- Python的文件操作
- python的文件操作
- Python-文件的操作
- python 的文件操作
- python的文件操作
- 简单的python文件操作。
- python对文件的操作
- Python 文件的读写操作
- 13.python的文件操作
- Python对于文件的操作
- python关于文件的操作
- 最短的名字
- 开源图片详细信息提取metadata-extractor
- OJ-复数类-重载运算符3+
- SpringMVC拦截器
- exit和_exit的区别
- python的文件操作
- vs2013 找不到帮助 help查看器
- Installation error: INSTALL_PARSE_FAILED_NO_CERTIFICATES 解决办法
- QVTKWidget控件显示二维图片
- achartengine实现平滑曲线
- Chrome 中的 JavaScript 断点设置和调试技巧
- C++中的new的用法
- 黑马程序员----Java中如何使用注释
- OJ-对象转换