Python open()用法
2015-06-16 20:37
711 查看
1. open()语法
open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
open函数有很多的参数,常用的是file,mode和encoding
file文件位置,需要加引号
mode文件打开模式,见下面3
buffering的可取值有0,1,>1三个,0代表buffer关闭(只适用于二进制模式),1代表line buffer(只适用于文本模式),>1表示初始化的buffer大小;
encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk;
errors的取值一般有strict,ignore,当取strict的时候,字符编码出现问题的时候,会报错,当取ignore的时候,编码出现问题,程序会忽略而过,继续执行下面的程序。
newline可以取的值有None, \n, \r, ”, ‘\r\n’,用于区分换行符,但是这个参数只对文本模式有效;
closefd的取值,是与传入的文件参数有关,默认情况下为True,传入的file参数为文件的文件名,取值为False的时候,file只能是文件描述符,什么是文件描述符,就是一个非负整数,在Unix内核的系统中,打开一个文件,便会返回一个文件描述符。2. Python中file()与open()区别
两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,建议使用open3. 参数mode的基本取值
r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;
b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、常见的mode取值组合
测试文件test.txt,内容如下:
a+模式
在写入文件前,我们在上面那段代码中加上一句f.seek(0),用来定位写入文件写入位置(文件开头),直接覆盖字符数(注意\n也是一个字符)
其他测试
open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
open函数有很多的参数,常用的是file,mode和encoding
file文件位置,需要加引号
mode文件打开模式,见下面3
buffering的可取值有0,1,>1三个,0代表buffer关闭(只适用于二进制模式),1代表line buffer(只适用于文本模式),>1表示初始化的buffer大小;
encoding表示的是返回的数据采用何种编码,一般采用utf8或者gbk;
errors的取值一般有strict,ignore,当取strict的时候,字符编码出现问题的时候,会报错,当取ignore的时候,编码出现问题,程序会忽略而过,继续执行下面的程序。
newline可以取的值有None, \n, \r, ”, ‘\r\n’,用于区分换行符,但是这个参数只对文本模式有效;
closefd的取值,是与传入的文件参数有关,默认情况下为True,传入的file参数为文件的文件名,取值为False的时候,file只能是文件描述符,什么是文件描述符,就是一个非负整数,在Unix内核的系统中,打开一个文件,便会返回一个文件描述符。2. Python中file()与open()区别
两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,建议使用open3. 参数mode的基本取值
Character | Meaning |
‘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 |
‘b’ | binary mode |
‘t’ | text mode (default) |
‘+’ | open a disk file for updating (reading and writing) |
‘U’ | universal newline mode (for backwards compatibility; should not be used in new code) |
b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、常见的mode取值组合
r或rt 默认模式,文本模式读rb 二进制文件 w或wt 文本模式写,打开前文件存储被清空wb 二进制写,文件存储同样被清空 a 追加模式,只能写在文件末尾a+ 可读写模式,写只能写在文件末尾 w+ 可读写,与a+的区别是要清空文件内容r+ 可读写,与a+的区别是可以写到文件任何位置4. 测试
测试文件test.txt,内容如下:
Hello,Pythonwww.linuxeye.comThis is a test file用一小段代码来测试写入文件直观的显示它们的不同
test = [ "test1\n", "test2\n", "test3\n" ]f = open("test.txt", "a+")try: #f.seek(0) for l in test: f.write(l)finally: f.close()a+、w+和r+模式的区别(测试后还原test.txt)
a+模式
# cat test.txtHello, Pythonwww.linuxeye.comThis is a test file test1 test2 test3w+模式
# cat test.txttest1 test2 test3r+模式
在写入文件前,我们在上面那段代码中加上一句f.seek(0),用来定位写入文件写入位置(文件开头),直接覆盖字符数(注意\n也是一个字符)
# cat test.txttest1 test2 test3注意:r+模式打开文件时,此文件必须存在,否则就会报错,‘r’模式也如此
inuxeye.comThis is a test file
其他测试
>>> f = open('test.txt')>>> f.read() #读取整个文件,字符串显示'Hello,Python\nwww.linuxeye.com\nThis is a test file\n'>>> f.read() #指针在文件末尾,不能再读取内容''
>>> f = open('test.txt')>>> f.readline() #一次读一行,指针在该行末尾'Hello,Python\n'>>> f.tell() #改行的字符长度13>>> f.readline()'www.linuxeye.com\n'>>> f.tell()30>>> f.readline()'This is a test file\n'>>> f.tell()50>>> f.readline()''>>> f.tell() #指针停在最后一行50
>>> f = open('test.txt')>>> f.readlines() #读取整个文件,以列表显示['Hello,Python\n', 'www.linuxeye.com\n', 'This is a test file\n']>>> f.tell() #指针在最后一行50
>>> f = open('test.txt','w') #覆盖创建新文件>>> f.write('Hello,Python!') #如果写入内容小于1024,会存在内存,否则需要刷新>>> f.flush() #写入到硬盘>>> f.close() #关闭文件会自动刷新>>> f.write('Hello,Linuxeye') #关闭后,写失败,提示文件已经关闭Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: I/O operation on closed file原文链接: https://blog.linuxeye.com/365.html
相关文章推荐
- 安装python及机器学习相关软件包
- 10款最好的Python IDE
- Python:使用cPickle储存器存储对象
- Python:简单的文件备份脚本
- Python:实现多态
- python变量类型
- Python:自定义异常类
- Python自学笔记之函数式编程3——filter
- 使用sublimeText开发python,使用lxml库部分要点
- Python学习(六)---函数
- Python并发实践_01_线程与进程初探
- python编码问题总结
- selenium_webdriver(python):cookie 处理
- python中绘图
- Python 学习笔记7
- python commands模块
- 用Python改变文件的MD5码
- beanstalk python操作
- [笔记]Emacs笔记:一,Windows下配置Emacs来开发Python
- Python——字符串变量