open读取d盘文件哪些 *** 作不能使用

open读取d盘文件哪些 *** 作不能使用,第1张

格式:open('文件的路径','权限')

例如:open('E:/aa.txt','r')

1、只读模式r

平时可能会出现使用open读取不到文件内容的情况,请注意下图中移动光标的 *** 作

o=open('E:/aa.txt','r')#打开一个文件,将这个 *** 作赋予给一个变量

a=o.read() #读取文件的所有内容并返回字符串

o.seek(0,0)#将光标移动到开头,如果不将光标移动到开头可能会读取不出东西,

因为上一步“a=o.read()”将鼠标的指针移动到了文段的末尾

b=o.readline() #读取文件第一行内容

o.seek(0,0)#将光标移动到开头,因为上一步“b=o.readline()”将指针移动到了

文段第一行的末尾

c=o.readlines()#读取文件所有内容并返回字符串

d=o.readable() #判断文件是否可读,返回布尔值,返回True或者False

2、写入覆盖模式w

注意,如果在文件路径中没有对应的文件存在,python在执行写入 *** 作时会自动创建一个文件,

例如我下面的文件路径,如果没aa.txt这个文件的话,那么我在执行这段程序时就会自动创建一个

o=open('E:/aa.txt','w')

o.write('hello ')#将文件中的内容覆盖掉,并写入括号中的内容,write传入的是一个字符串

o=open('E:/aa.txt','w')

o.writelines('HELLO') #将文件中的内容覆盖掉并写入括号中的内容

在txt文件中看起来感觉跟write没啥区别,其实writelines传入的是一个数组,而write传入的是字符串

3、写入追加模式a和a+

可能会出现出现“io.UnsupportedOperation: not readable”这种错误,请注意下图的文件权限

o=open('E:/aa.txt','a')

o.write('lol好玩')#写入追加在内容后

o.writelines('\n\n999') #写入追加在内容后,\n是换行,两个\n意思换两行

a=o.writable()#判断文件是否可写入追加,并将判断出来的布尔值赋值给变量a

o.seek(0,0) #将光标移动到最开头

print(a) #输出变量a,查看文件是否可以追加

print(o.read()) #读取文件内容返回列表,前提权限给的是a+,如果是a的话无法查看

并且会报错,如下图所示

这里是a+的用法以及示例

o=open('E:/aa.txt','a+')

o.write('nb') #写入追加在文件的内容后面

o.writelines('\n999') #写入追加在内容后面,\n是换行

a=o.writable()#判断文件是否可写入追加,并将判断出来的布尔值赋值给变量a

o.seek(0,0) #将光标移动到最开头

print(a) #输出变量a,查看文件是否可以追加

print(o.read()) #读取文件内容返回列表,前提权限给的是a+,如果是a的话无法查看

当文件中为空时,执行以上代码结果应该如下

Open 语句

能够对文件输入/输出 (I/O)。

语法

Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]

Open 语句的语法具有以下几个部分:

部分 描述

pathname 必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。

mode 必要。关键字,指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。

access 可选。关键字,说明打开的文件可以进行的 *** 作,有 Read、Write、或 Read Write *** 作。

lock 可选。关键字,说明限定于其它进程打开的文件的 *** 作,有 Shared、Lock Read、Lock Write、和 Lock Read Write *** 作。

filenumber 必要。一个有效的文件号,范围在 1 到 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。

reclength 可选。小于或等于 32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。

说明

对文件做任何 I/O *** 作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。

如果 pathname 指定的文件不存在,那么,在用 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。

如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open *** 作失败,而且会有错误发生。

如果 mode 是 Binary 方式,则 Len 子句会被忽略掉。

重要 在 Binary、Input 和 Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append 和 Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。

要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:

f = open('/Users/michael/test.txt', 'r')

标示符'r'表示读,这样,我们就成功地打开了一个文件。

如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在:

如果文件打开成功,接下来,调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示:

最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用 *** 作系统的资源,并且 *** 作系统同一时间能打开的文件数量也是有限的:

由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现:

但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

这和前面的try ... finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。

调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。

如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11737007.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存