您现在的位置是:首页 > 网络趣梗网络趣梗
open write函数()
2022-08-23 08:19:06网络趣梗0人已围观
简介 open write函数(),新营销网红网本栏目通过数据整理汇集了open write函数()相关信息,下面一起看看
open write函数(),新营销网红网本栏目通过数据整理汇集了open write函数()相关信息,下面一起看看。
Python的内置函数open()返回一个file对象(假设赋给变量fo)。返回的文件对象有fo.read(),fo.write(),fo.close(),fo.tell(),fo.seek(),fo.flush()等。
目录
1内置函数open()
2文件对象(fo)属性
3文件对象“读取”
4文件对象是“写入的”
5 fo.tell()、fo.seek()、fo.flush
6 fo.close()
7 pickle,一个与文件读写相关的内置模块
1内置函数open()内置函数open()的基本格式如下:
open(file,mode=rb,buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)
除了file是必需的以外,以上参数都是可选的。
(具体参考:https://docs.python.org/3/library/functions.html#open)
1.1文件参数
文件必须是字符串或代表字符串的字符串变量。使用此字符串来指示要打开的文件的路径。
文件可以是绝对路径,如e: \ \ test.txt。
也可以是相对路径(相对于当前工作路径),如“”text.txt
注意路径的规范书写。允许以下三种书写方法:
d :/原件. txt
D:\\original.txt
r D: \原件. txt
1.2模式参数
Mode用于指定文件打开后的操作模式。比如R用来读(写),W 用来写(写)。文件打开后,第一次write()j用于覆盖文件已有的内容,如果文件指针的位置不变,则再次write()。),A也用来写(通过添加内容),意思是更新(更新,读写,可以添加到其他模式)。
文件可以以文本模式或二进制模式读写,分别用B和T表示。(如果指定了integer参数,read()将读取指定数量的字符或字节(取决于打开模式是文本模式还是二进制模式))
mode的默认模式是 rb ,即打开后,以字符串形式读取。
当文件不存在时,W模式会新建一个文件,R模式会出错。
1.3缓冲参数
指定缓冲(缓冲区从磁盘复制到内存)策略。如果缓冲值设置为0,则不使用缓冲。如果buffer值为1,则在访问文件时使用缓冲。如果指定的缓冲区值是大于1的整数,则使用指示的缓冲区大小执行缓冲。如果为负,则缓冲区大小是系统默认值(默认行为)。
1.4编码参数
仅在文本模式下指定。指定文本模式时,默认使用locale.getpreferredencoding()的返回值作为文件代码,在windows7简体中文版中返回CP936或gdk。如果一个. txt文件采用UTF-8编码,并且有中文字符,那么open()的参数必须指定编码方式为utf-8,比如:open (test.txt,RT,encoding=UTF-8)
UTF-8对每个汉字使用三个字节进行编码。例如,1000个汉字需要3KB的存储空间。
1.5误差参数
用于指定文本模式下编码和解码错误的处理方法;
1.6换行参数
用于指定文本行(段落),可由os.linesep查询,如\r\n在widnwos7下。
1.7使用open()作为fileObject
使用关键字with来处理文件对象是一个好习惯。它的好处是文件用完之后会自动关闭,即使有异常。它是try-finally块3360的缩写。
用open(/tmp/workfile,r)作为f:
.read_data=f.read()
F.closed#如果文件关闭则返回true,否则返回false;
真实的
2文件对象(fo)属性文件一旦打开,就会有一个文件对象,你可以获取文件的各种信息。
Fo.closed:如果文件关闭,则返回true否则,它是假的;
Fo.mode:返回文件打开访问模式;
返回文件名;
3 3 3.1文件对象“读取”的fo . read([大小])
Read(int size)读取指定数量的字符或字节(取决于打开模式是文本模式还是二进制模式),并在指定integer参数时返回指定数量的字符串。
Read()如果没有指定参数,则整个文档内容以字符串形式返回。当文件大小是当前机器
器内存两倍时,就会产生问题。
没有参数的read()会一直读文件到文件末尾(文件指针移到最后,指向为空),再操作fo.read()时会返回一个空字符串( ):
3.2 fo.readlines()
该 也是读取整个文档的内容,返回一个列表。该列表相当于是以换行 \n 符号来分割整个文档,列表的第n个元素就是文档第n+1行的内容;
3.3 fo.readline
该 每次读取一行的内容,并返回该内容的一个字符串,同时文件指针指向下一行的开头位置,再次运行fo.readline后,则从最新的指针位置开始读取一行的内容返回,直到文档的第后一行,fo.readline在读不到下一行时会返回一个空字符串。
所以此 通常通过一过while循环来读取整个文档内容。如:
with open( original.txt , rU ,encoding= UTF-8 ) as fo:
....str = fo.readline()
....while str:# 使用字符串str是否为空为判断是否有读到最后一行
........……
........str = fo.readline()
3.4 直接迭代
如果open()返回的文件对象都实现了__iter__() ,可以返回一个迭代器,则在open()后可以直接用for 迭代,如:
fo = open( original.txt , rU ,encoding= UTF-8 )
for item in fo:
....print(item)
fo.close()
3.5 关于换行
对于文本模式来说,默认读到\n、\r、\r\n时,都可以被判定为一行,而readline()或readlines()读到的第一行的换行字符都一律转换为\n;
对于二进制模式来说,行的判断标准默认是遇到b \n 这个bytes类型。
文本模式在写入的情况下,任何 \n 都会被置换为os.linesep的值。(windows就是 \r\n )
4 文件对象“写”的
4.1 fo.write()
写文件需要open()以 w 、 r+ 、 a 为参数,才可以使用fo.write() 在文件中写入内容,写入的内容必须是字符串,如果是数字需要用str()函数将其做一个转换。
该 的返回值是一个整数,表示写入的字符串的长度。
w ,当文本不存在时可以新建(当然不能读),如果文件存在,则先清空文件中的全部内容,‘w+‘虽然也可以读,但也只能读到空白,用+添加附加模式没什么意义。
r+ 是读写的形式,可以读,文件不存在时出错,写也是以覆盖的方式,先清空文件中的全部内容;
a 是追求读的方式,也就是使用fo.write() 写入内容到文件时,以前的内容不清空,会在文档的末尾处接着写。
4.2 fo.writelines(sequence)
写入字符串序列到文件。如果需要换行,需要加入每行的换行符\n。
fo = open( foo.txt , r+ )
fo.seek(0, 2)# 该语句用于定位文件指针位置,参数0表示位偏移为0,参数2 表示自文件末尾开始
seq = [ \nThis is 8th line\n , This is 9th line ]
line = fo.writelines( seq )
fo.close() # 文件对象使用close() ,表示文件对象操作完毕,内存缓存区的内容写入文件,并清空。
5 fo.tell()、fo.seek()、fo.flush
无论读写文件,Python都会跟踪文件中的读\写位置。在默认情况下,文件的读\写位置都位于文件的开始位置。Python提供了控制文件读\写位置的 ,可以改变文件读\写操作发生的位置进行随机读写。
当使用open()函数打开文件时,open()函数在内存中创建缓冲区,将磁盘上的文件内容复制到缓冲区。文件内容复制到文件对象缓冲区后,文件对象将缓冲区视为一个大的列表,其中的每一个元素都有自己的索引,文件对象按字节对缓冲区索引计算。同时,文件对象对文件当前位置,即当前读\写操作发生的位置进行维护。许多 隐式使用当前位置。比如调用readline() 后,文件当前位置移动到下一个回车处。
fo.tell() 可以跟踪文件的当前位置,返回一个整数,代表文件对象在文件中的指针位置,该数值计量了自文件开头到指针处的比特数。单位是字节B。
需要改变文件对象指针的话,使用 fo.seek(offset,from_what)。指针在该操作中从指定的引用位置from_what移动 offset 比特,引用位置由 from_what 参数指定。 from_what 值为 0 表示自文件起始处开始,1 表示自当前文件指针位置开始,2 表示自文件末尾开始。from_what 可以忽略,其默认值为零,此时从文件头开始。
可以使用seek()实现文件的随机存取,文件的打开方式需要使用 r+ 参数。
fo.flush 在文件关闭前提前刷新内存缓冲区。
with open( c:\\test.txt , w ) as f:
....f.write( 12345 )
....print(f.tell())
....f.write( 6789 )
with open( c:\\test.txt , r+ ) as f:
....f.seek(3)
....f.write( def )
....f.flush
....print(f.tell())
....print(f.read())
....f.seek(0)
....print(f.read())
output:
5
6
789
123def789
text.txt内容为:123def789
read()或write()操作后都会使文件指针的位移量发生改变。
read()会在文件指针指向的文件开始的位置开始读,如果没有指定size参数,全部读完后指针也指向到了最后一个字符的空字……
wrtie()会在文件指针最后确定的位移量处写入内容,如果是在中间则会覆盖后面需要的字节数,末尾则是添加。
6 fo.close()
文件对象的close() 用于取消程序和文件之间连接,内存缓冲区的所有内容将写入磁盘。有时忘记使用该 时会有一些意想不到的错误。
with语句可以打开文件并赋值给文件对象,之后就可以对文件进行操作。文件会在语句结束后自动判读,即使由于异常引起的结束也是如此。
writewrite(write 相关的短语动词)
更多open write函数()相关信息请关注本文章,本文仅仅做为展示!
Tags: 网络趣事
很赞哦! ()
上一篇:党费的缴纳(交纳党费要求)
相关文章
随机图文
留言与评论 (共有 条评论) |