加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python open()文件处理使用介绍

发布时间:2020-05-27 14:29:59 所属栏目:Python 来源:互联网
导读:1.open()语法open(file[,mode[,buffering[,encoding[,errors[,newline[,closefd=True]]]]]])open函数有很多的参数,常用的是file,mode和encoding

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,”,‘rn',用于区分换行符,但是这个参数只对文本模式有效;
closefd的取值,是与传入的文件参数有关,默认情况下为True,传入的file参数为文件的文件名,取值为False的时候,file只能是文件描述符,什么是文件描述符,就是一个非负整数,在Unix内核的系统中,打开一个文件,便会返回一个文件描述符。

2. Python中file()与open()区别
两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,建议使用open

3. 参数mode的基本取值

r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;
b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、

常见的mode取值组合

r或rt 默认模式,文本模式读
rb   二进制文件
 
w或wt 文本模式写,打开前文件存储被清空
wb  二进制写,文件存储同样被清空
 
a  追加模式,只能写在文件末尾
a+ 可读写模式,写只能写在文件末尾
 
w+ 可读写,与a+的区别是要清空文件内容
r+ 可读写,与a+的区别是可以写到文件任何位置

4. 测试
测试文件test.txt,内容如下:

Hello,Python
www.jb51.net
This is a test file

用一小段代码来测试写入文件直观的显示它们的不同

test = [ "test1n","test2n","test3n" ]
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.txt
Hello,Python
www.jb51.net
This is a test file
test1
test2
test3

w+模式

# cat test.txt
test1
test2
test3

r+模式
在写入文件前,我们在上面那段代码中加上一句f.seek(0),用来定位写入文件写入位置(文件开头),直接覆盖字符数(注意n也是一个字符)

# cat test.txt
test1
test2
test3
inuxeye.com
This is a test file

注意:r+模式打开文件时,此文件必须存在,否则就会报错,‘r'模式也如此
其他测试

>>> f = open('test.txt')
>>> f.read() #读取整个文件,字符串显示
'Hello,Pythonnwww.jb51.netnThis is a test filen'
>>> f.read() #指针在文件末尾,不能再读取内容
''
>>> f = open('test.txt')
>>> f.readline() #一次读一行,指针在该行末尾
'Hello,Pythonn'
>>> f.tell() #改行的字符长度
13
>>> f.readline()
'www.jb51.netn'
>>> f.tell()
30
>>> f.readline()
'This is a test filen'
>>> f.tell()
50
>>> f.readline()
''
>>> f.tell() #指针停在最后一行
50
>>> f = open('test.txt')
>>> f.readlines() #读取整个文件,以列表显示
['Hello,Pythonn','www.jb51.netn','This is a test filen']
>>> 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 

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读