python中python open函数路径具有刷新的作用吗

Python open()文件处理使用介绍
我的图书馆
Python open()文件处理使用介绍
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的内建函数来操作,建议使用open
3. 参数mode的基本取值
open for reading (default)
open for writing, truncating the file first
open for writing, appending to the end of the file if it exists
binary mode
text mode (default)
open a disk file for updating (reading and writing)
universal newline mode (for bac should not be used in new code)
r、w、a为打开文件的基本模式,对应着只读、只写、追加模式;
b、t、+、U这四个字符,与以上的文件打开模式组合使用,二进制模式,文本模式,读写模式、通用换行符,根据实际情况组合使用、
常见的mode取值组合
1234567891011r或rt 默认模式,文本模式读rb&& 二进制文件&&w或wt 文本模式写,打开前文件存储被清空wb& 二进制写,文件存储同样被清空&&a& 追加模式,只能写在文件末尾a+ 可读写模式,写只能写在文件末尾&&w+ 可读写,与a+的区别是要清空文件内容r+ 可读写,与a+的区别是可以写到文件任何位置
测试文件test.txt,内容如下:
123Hello,Pythonwww.jb51.netThis is a test file
用一小段代码来测试写入文件直观的显示它们的不同
test = [ "test1\n", "test2\n", "test3\n" ]
f = open("test.txt", "a+")
#f.seek(0)
for l in test:
f.write(l)
a+、w+和r+模式的区别(测试后还原test.txt)
1234567# cat test.txtHello, Pythonwww.jb51.netThis is a test filetest1test2test3
1234# cat test.txttest1test2test3
在写入文件前,我们在上面那段代码中加上一句f.seek(0),用来定位写入文件写入位置(文件开头),直接覆盖字符数(注意\n也是一个字符)
123456# cat test.txttest1test2test3<This is a test file
注意:r+模式打开文件时,此文件必须存在,否则就会报错,‘r'模式也如此
&&& f = open('test.txt')
&&& f.read() #读取整个文件,字符串显示
'Hello,Python\nwww.jb51.net\nThis is a test file\n'
&&& f.read() #指针在文件末尾,不能再读取内容
&&& f = open('test.txt')
&&& f.readline() #一次读一行,指针在该行末尾
'Hello,Python\n'
&&& f.tell() #改行的字符长度
&&& f.readline()
'www.jb51.net\n'
&&& f.tell()
&&& f.readline()
'This is a test file\n'
&&& f.tell()
&&& f.readline()
&&& f.tell() #指针停在最后一行
&&& f = open('test.txt')
&&& f.readlines() #读取整个文件,以列表显示
['Hello,Python\n', 'www.jb51.net\n', 'This is a test file\n']
&&& f.tell() #指针在最后一行
12345678&&& 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
TA的最新馆藏
喜欢该文的人也喜欢open/文件操作
f=open('/tmp/hello','w')
#open(路径&#43;文件名,读写模式)
#读写模式:r只读,r&#43;读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式
如:'rb','wb','r&#43;b'等等
读写模式的类型有:
rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)
w&&&&&以写方式打开,
a&&&&&以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r&#43;&&&&&以读写模式打开
w&#43;&&&&&以读写模式打开 (参见 w )
a&#43;&&&&&以读写模式打开 (参见 a )
rb&&&&&以二进制读模式打开
wb&&&&&以二进制写模式打开 (参见 w )
ab&&&&&以二进制追加模式打开 (参见 a )
rb&#43;&&&&以二进制读写模式打开 (参见 r&#43; )
wb&#43;&&&&以二进制读写模式打开 (参见 w&#43; )
ab&#43;&&&&以二进制读写模式打开 (参见 a&#43; )
1、使用'W',文件若存在,首先要清空,然后(重新)创建,
2、使用'a'模式 ,把所有要写入文件的数据都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,将自动被创建。
f.read([size]) size未指定则返回整个文件,如果文件大小&2倍内存则有问题.f.read()读到文件尾时返回&&(空字串)
file.readline() 返回一行
file.readline([size]) 返回包含size行的列表,size 未指定则返回全部行
for line in f: print line #通过迭代器访问
f.write(&hello\n&) #如果要写入字符串以外的数据,先将他转换为字符串.
f.tell() 返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).
f.seek(偏移量,[起始位置])
用来移动文件指针
偏移量:单位:比特,可正可负
起始位置:0-文件头,默认&#20540;;1-当前位置;2-文件尾
f.close() 关闭文件
转载于 :/dkblog/archive//1980651.html
1.打开文件会用到open函数,标准的python打开文件语法如下:
open(name[,mode[,buffering]])
open函数的文件名是必须的,而模式和缓冲参数都是可选的。比如说有个a.txt的文本文件,存放在c:\text下,那么你要打开它可以这样操作:
&&&x = open(r 'c:\text\a.txt')
用读的模式打开这个路径下的对应文本文件,如果要打开对像不存在,程序会报错。
2.打开文件过程中用到了‘r’这个参数,在文件打开过程中还会用到很多操作方法,都有不同的参数来表示。'r'读模式、'w'写模式、'a'追加模式、'b'二进制模式、'&#43;'读/写模式。
3.&&&f = open('a.txt', 'w')
&&&f.write('hello,')
&&&f.write('iplaypython')
&&&f.close()
第一行:用写的方式打开a.txt这个文件,并赋给f ()
第二行:f.write方法写入( )括号内的内容
第三行:同第二行意义相同,重点要说明下f.write写入的内容会追加到文件中已存在的数据后,也就是就此时的'iplaypython'是在'hello,'后边显示的。
第四行:最后调用close方法关闭文件,有打开就要有关闭。
本文已收录于以下专栏:
相关文章推荐
本函数是打开一个文件并返回文件对象。如果文件不能打开,抛出异常OSError。参数file是一个字符串表示的文件名称,或者一个数组表示的文件名称。文件名称可以是相对当前目录的路径,也可以是绝对路径表示...
打开一个文件并向其写入内容
Python的open方法用来打开一个文件。第一个参数是文件的位置和文件名,第二个参数是读写模式。这里我们采用w模式,也就是写模式。在这种模式下,文件原有的内容将会被删除...
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符,标示符&#39;r&#39;表示读。
&&& f = open(&#39;D:/test.txt&#39;,&#39;r&#39;)
注意了,对初学p...
转载于 &#160;/sys/open.html
一、Python open()函数文件打开操作
打开文件会用到open函数,标准...
内建函数open()的基本语法:
file_object = open(file_name,access_mode=’r’,buffering=-1)可选参数buffering用于指示访问文件所采用...
关于python内置文件函数open的问题。
python函数,open()。python文件处理
手册直译因为该函数的官方参考手册引文篇幅过大,不再本文中体现,如有需要查询原引文内容的,详见官方手册。手册直译打开发文件并返回相应的文件对象,如果文件不能打开,则引发OSError异常。
他的最新文章
讲师:AI100
讲师:谢梁
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)3045人阅读
前段日子看了关于python文件和流的一些文献,其中最基础的便是python的一个内建函数:open!!!
很简单的一个函数,他的原型是这样的:
open(name,[,mode[,buffering]])
顾名思义,name参数指的就是文件名,mode是模式参数,buffering是控制缓冲参数,后两个为可选参数。open函数会返回一个文件对象。
for example:
&&& f = open('myfile.txt')
这样就可以打开当前目录下的myfilef.txt文件。这里举的例子是相对当前目录的路径,当然文件路径也可以是绝对路径(windows中为C:\,Linux or Unix下则是~/)。
今天我想和大家讲的就是这个函数的参数使用上的问题,当然我只是一个大一学生,一个python菜鸟,我希望热爱python的大神们能为我解疑,我只是和大家分享我的看法,想法,以后每次发表的博客也都一样,我希望能和跟多热爱python的大家多交流,多借鉴,学习,无论是和我一样的菜鸟还是python大神。好了,进入正题,Let's go!
open函数的第一个参数不必说。
第二个参数(mode):常用&#20540;有' r ',' w ',' a ',' b ',' &#43; ',分别是读模式,写模式,追加模式,二进制模式,读写模式。其中' b ',' + '能能加到其他模式中,举个例子:比如' rb '读取二进制文件,' r&#43; '可以进行读写文件。
好了,我要讲的就是open的第三个参数!buffering!
buffering的英文意思是缓冲!(虽然我的英语差到极点但是每次看到代码中不动的英文单词总喜欢先查一下他的英文意思)从他的英文含义就可以大概知道他就是控制缓冲的参数。
如果参数为0(或是布尔&#20540;的False),I/O就是无缓冲的。
如果参数为1(或是布尔&#20540;的True),I/O就是有缓冲的。
如果参数为大于1的数字,则此&#20540;代表缓冲区的大小(单位是字节);如果为-1或是任何负数,则表示使用默认的缓冲区大小。
这样理解完,&#20284;乎很简单,不就是当参数为0或False时输入输出无缓冲,否则就有缓冲,而且大于1的数表示缓冲区大小,负数则使用默认缓冲区大小吗。
for example:
现在我的当前目录下有个myfile.txt文件。进入python交互式:
&&& f = open( ' myfile.txt ' , ' w ' , 0 )
#这时进入无缓冲的写模式
&&& f.write( ' I love python! ' )
#这时在另一个终端用cat查看下文件内容,就可以查看到 I love python!
&&& f = open( ' myfile.txt ' , ' w ' , 1 )
#这时进入有缓冲的写模式
&&& f.write( ' I love python! ' )
#这时在另一个终端查看时文件内容为空
&&& f.close()
#这时再次查看,就可以看到 I love python!
前面的很好理解,因为后者是有缓冲的嘛,需要close或者flush才能写入磁盘。但是如果参数是第三种情况的话呢,也就是大于一或是一个负数,即自己设置缓冲区大小。以前我一直觉得这不就是有缓冲吗,设置个缓冲区大小嘛,一旦超过缓冲区大小就直接写入磁盘或者报错啥的呗,是不是也有很多人也这么想的呢。
But!前几天一次偶然,我发现并不是这样,然后我在此思考,尝试好几天,网上也&#20284;乎没有关于这个问题的解疑解答。但我希望大家知道这个关于open函数的第三个函数的这个情况就好。
for example:
&&& f = open( ' myfile.txt ' , ' w ' , 100)
#这时进入有缓冲的,缓冲区大小为100字节的写模式
&&& f.write( ' Life is short , Use Python! ' )
#内容远小于缓冲区大小没错,理论上这时文件内容应该为空,但是现实残酷,我竟然cat到了Life is short,Use
& Python!!!
各种尝试,查阅,总结。我认为事实上当你为缓冲区设置大小时,open进入的却是无缓冲模式。
当时我一直使用的是Ubuntu15.10下的python2.7.10。后来我用os下的python2.7.8试了多次,发现却是我以前理解的那样,确实进去了有缓冲的模式,并自己设置了缓冲区大小。
所以希望大家能自己简单测试一下,并将结果告诉我,希望大神能给小弟解疑答惑,菜鸟能和小弟一起交流学习,共同迈向python大神之路!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3449次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'1. &fopen &&&
打开普通文件
带缓冲区撒点粉撒点粉阿桑地方
缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据
函数原型:FILE * f(const char * path,const char * mode);
返回值:顺利打开后,指向该流的就会被返回。如果打开失败则返回NULL,并把存在errno 中。
参数说明:
参数path串包含欲打开的路径及文件名,参数mode字符串则代表着流。
mode有下列几种形态:
r 以方式打开,该文件必须存在。
r+ 以可读写方式打开,该文件必须存在。
rb+ 读写打开一个,允许读写。
rw+ 读写打开一个文本,允许读和写。
w 打开只写,若文件存在则文件长度清为0,即该文件内容会消失。若不存在则建立该文件。
w+ 打开可读写,若文件存在则文件长度清为零,即该文件内容会消失。若不存在则建立该文件。
a 以附加的打开只写。若不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的。若不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个;只允许写数据。
wb+ 读写打开或建立一个,允许读和写。
ab+ 读写打开一个,允许读或在文件末追加数据。
at+ 打开一个叫string的文件,a表示append,就是说写入处理的时候是接着原来文件已有内容写入,不是从头写入覆盖掉,t表示打开文件的类型是文本文件,+号表示对文件既可以读也可以写。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库以二进制模式打开文件。如果不加b,表示默认加了t,即rt,wt,其中t表示以打开文件。由f()所建立的新会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。
有些C可能不完全提供所有这些功能,有的C不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。
2. &open & &
打开设备文件
不带缓冲区
非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度 快
函数原型:int&open(const&char&*pathname,&int&flags);
& & & & & & & & int&open(const&char&*pathname,&int&flags, mode_t mode);
所需库:&fcntl.h&
返回值:成功则返回文件描述符,否则返回 -1;
参数说明:
对于函数来说,第三个参数仅当创建新文件时(即 使用了O_CREAT 时)才使用,用于指定文件的访问权限位(access permission bits)。pathname 是待/创建文件的POSIX路径名(如/home/user/a.cpp);flags 用于指定文件的打开/创建模式,这个参数可由以下(定义于)通过逻辑位或逻辑构成。
O_RDONLY 只读模式
O_WRONLY 只写模式
O_RDWR 读写模式
打开/创建文件时,至少得使用上述三个常量中的一个。以下常量是选用的:
O_APPEND 每次写操作都写入文件的末尾
O_CREAT 如果指定文件不存在,则创建这个文件
O_EXCL 如果要创建的文件已存在,则返回 -1,并且修改 errno 的值
O_TRUNC 如果文件存在,并且以只写/读写方式打开,则清空文件全部内容(即将其长度截短为0)
O_NOCTTY 如果路径名指向终端设备,不要把这个设备用作控制终端。
O_NONBLOCK 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O
设置为非阻塞模式
(nonblocking mode)
以下三个常量同样是选用的,它们用于同步输入输出
O_DSYNC 等待物理 I/O 结束后再 write。在不影响读取新写入的数据的前提下,不等待更新。
O_RSYNCread等待所有写入同一区域的写操作完成后再进行
O_SYNC 等待物理 I/O 结束后再write,包括更新文件属性的 I/O
3.popen & &
函数原型:FILE&* popen (&const&char&* command ,&const&char&* type );
所需库:&&
返回值:如果调用 fork() 或 pipe() 失败,或者不能分配内存将返回NULL,否则返回标准 I/O 流。
参数说明:type&参数只能是读或者写中的一种,得到的返回值(标准 I/O 流)也具有和 type 相应的只读或只写类型。如果 type 是 "r" 则文件指针连接到 command 的标准输出;如果 type 是 "w" 则文件指针连接到 command 的标准输入。
command&参数是一个指向以 NULL 结束的 shell 命令字符串的。这行命令将被传到 bin/sh 并使用-c 标志,shell 将执行这个命令。
阅读(...) 评论()}

我要回帖

更多关于 python3 open函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信