My_Project

资料整理


Python文件操作

<p>文件操作</p> <p>1、创建\打开文件</p> <pre><code>(1)格式: file = open(filename[,mode[,buffering]]) 参数说明: file:被创建的文件对象。 filename: 1、要创建或打开文件的文件名称,需要使用引号括起来。 2、如果要打开的文件和当前文件在同一个目录下,那么直接写文件名即可,否则指定完整路径。 mode:可选参数,用于指定文件的打开模式。 buffering:可选参数,用于指定读写文件的缓存模式,值为0表示不缓存;为1表示缓存;如果大于1则表示缓存区的大小;默认为缓存模式。 文件打开模式(mode参数值说明): 使用“r/rb//w/wb/+”操作文件时, 若文件不存在,会在指定路径下创建对应文件名的文件; 若存在,则会对已存在的文件进行覆盖(并将原文件内容清空); 使用“a//ab”操作文件时, 若文件不存在,会创建新文件用于写入; 若文存在,则会将新的内容追加至文件末尾; (2)r:read; w:write; a:append r 以只读的方式打开文件,指针会定位到文档的开头; r+ 以读写的方式打开文件,指针会定位到文档的开头; rb 以二进制的方式+只读的方式打开一个文件,指针会定位到文档的开头(一般用于非文本文件:图片、声音等); rb+ 以二进制的方式+读写的方式打开一个文件,指针会定位到文档的开头(一般用于非文本文件:图片、声音等); w 以只写的方式打开文件,指针会定位到文档的开头; w+ 以读写的方式打开文件,指针会定位到文档的开头; wb 以二进制的方式+只写的方式打开一个文件(一般用于非文本文件:图片、声音等); wb+ 以二进制的方式+读写的方式打开一个文件(一般用于非文本文件:图片、声音等); a 以追加的方式打开文件,如果文件已经存在,则将新的内容追加至文件末尾;如果不存在,则创建新文件用于写入; a+ 以读写的方式打开文件,如果文件已经存在,则将新的内容追加至文件末尾;如果不存在,则创建新文件用于读写; ab 以二进制+追加的方式打开文件,如果文件已经存在,则将新的内容追加至文件末尾;如果不存在,则创建新文件用于写入; ab 以二进制+追加的方式打开文件,如果文件已经存在,则将新的内容追加至文件末尾;如果不存在,则创建新文件用于读写; (3)w与a的区别 w每次都会清空,a每次都会追加。 (4)以二进制的形式打开文件 file = open('E:\001test\am.png','rb') print(file) (5)打开文件时指定编码格式 说明:使用open()打开文件时,默认采用GBK编码,当被打开的文件不是GBK编码时,会抛出异常。 方案: 1、直接修改文件的编码 2、在打开文件时,直接指定使用编码方式,推荐这种方式 在调用open()函数时,通过添加encoding='utf-8'参数即可将编码指定为UTF-8;如果想指定其他编码,可以将单引号中的内容替换成想要指定的编码。 案例: 打开采用UTF-8编码保存的notice.txt文件,代码如下: file = open('notice.txt','r',encoding='utf-8') 说明 默认情况下,用open()函数打开一个不存在的文件,会抛出异常。 解决办法: 1、在当前目录(与执行文件相同的目录)下创建一个文件。 2、在调用open()函数时,指定mode的参数为w、w+、a、a+...这样,当文件不存在时就会创建一个新的文件。</code></pre> <p>2、打开文件时使用with语句</p> <pre><code>(1)说明 1、如果在打开文件时抛出了异常,那么将导致文件不能被及时关闭。 2、使用python提供的with语句,从而实现在处理文件时无论是否抛出异常,都能保证with语句执行完毕后关闭已经打开的文件。 (2)格式 with expression as target: with-body 参数说明: expression:用于指定一个表达式,可以是打开文件的open()函数 target:用于指定一个变量,并且将expression的结构保存到该变量中 with-body:用于指定with语句体,其中可以是执行with语句后相关的一些操作语句。可以直接用pass代替。 (3)案例 在打开文件时,使用with语句,代码如下: print("\n","="*10,"蚂蚁庄园动态","="*10) with open('lukeru.txt','w') as file: #创建或打开保存蚂蚁庄园动态信息的文件 pass print("\n 即将显示......\n")</code></pre> <p>3、关闭文件</p> <pre><code>(1)说明 1、打开文件后,需要及时关闭文件,以避免对文件造成不必要的破坏。 2、close()方法先刷新缓冲区中还没有写入的信息,再关闭文件。这样可以将没有写入的文件的内容写入文件。 3、在关闭之后,便不能再进行写入操作了。 4、关闭文件对象file,并将属性file.close设置为True,即文件已关闭,则返回True; (2)格式 file.close() 参数说明: file:要关闭的文件对象</code></pre> <p>4、读取文件</p> <pre><code>(1)读取指定字符 read()函数 格式 file.read([size]) 参数说明: file:要打开的文件对象 size:可选参数,用于指定读取的字符个数,如果省略,则一次性读取所有内容。 file.readable() 说明 如果f已经打开等待读取,则返回True; file.readinto(ba) 说明 将至多len(ba)个字节读入到bytearray ba中,并返回读入字节数,如果在文件结尾,就为0; 说明 1、在调用read()函数读取文件内容的前提是,在打开文件时,指定打开模式为r(只读)或r+(读写),否则抛出异常。 2、read([size])是从文件的开头开始读取字符的,如果向读取部分内容,可以使用seek()函数。 案例 with open('lukeru.txt','r') as file:#打开文件 string=file.read(3)#读取前10个字符 print(string) seek()函数 格式 file.seek(offset[,whence]) 参数说明: file:表示已经打开的文件对象 offset:用于指定移动的字符个数,其具体位置与whence有关。 whence:用于指定从什么位置开始计算。值0表示从文件开头开始计算,1表示从当前位置开始计算,2表示从文件末尾开始计算。默认是0。 1、对于whence参数,如果在打开文件时,没有使用b模式(rb),那么只允许从文件开头开始计算相对位置,从文件末尾计算时就会抛出异常。 file.seekable() 说明 如果f支持随机存取,就返回True; 案例 想要从文件的第19个字符开始读取13个字符,代码如下: with open('lukeru.txt','r') as file:#打开文件 file.seek(19)#移动文件指针到新的位置 string=file.read(13)#读取13个字符 print(string) 说明 在使用seek()函数时,offset的值是按一个汉字占2个字符,一个英文字母和数字占1个字符计算的,这与read([size])函数不同。 (2)读取一行 格式 file.readline() 参数说明: file:打开的文件对象,同read()方法一样,也需要指定打开模式为r(只读)或r+(读写) (3)读取全部 格式 file.readlines() 参数说明: file:打开的文件对象,同read()方法一样,也需要指定打开模式为r(只读)或r+(读写)</code></pre> <p>5、写入文件</p> <pre><code>说明 1、调用write()函数向文件写入内容的前提是在打开文件时,指定的打开模式为w(可写)或a(追加),否则会抛出异常。 格式 file.write(string) 参数说明: file:要打开的文件对象 string:要写入的字符串 file.writable() 说明 如果f是为写操作而打开的,就返回True; file.writelines(seq) 说明 将对象序列写入到文件;</code></pre> <p>6、清空文件</p> <pre><code>格式 file.flush()</code></pre> <p>7、写入和读取文件常用方法</p> <pre><code>file.encoding 说明:yte与str之间进行转换时使用的编码; file.fileno() 说明:回底层文件的文件描述符; file.isatty() 说明:文件对象与控制台关联,就返回True; file.mode 说明:件对象打开时使用的模式; file.name 说明:件对象f的文件名(如果有); file.newlines 说明:本文件f中的换行字符串的类型; file.__next__() 说明:回文件对象f的下一行; file.peek(n) 说明:回n个字节,而不移动文件指针的位置; file.tell() 说明:回当前指针位置; file.truncate(size) 说明:取文件到当前文件指针所在位置,如果给定size,就到size大小处;</code></pre>

页面列表

ITEM_HTML