Python学习笔记6(文件操作)
简单的讲,对文件的操作流程可以为以下三步
- 打开文件,得到文件句柄并且赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
1.打开文件
你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。
语法:
1 file = open(file_name [, access_mode][, buffering])
各个参数的细节如下:
- file_name,文件名
- access_mode,打开方式,具体见下面的表格,如果不写默认为‘r
- buffering,如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
不同打开文件的模式:
2.关闭文件
File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。用 close()方法关闭文件是一个很好的习惯。
语法:
1 file.close()
3.读取文件
read()方法从一个打开的文件中读取一个字符串。
语法:
1 file.read([count]);
在这里,被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。
file.readline([count]) #读一行,如果定义了count,有可能返回的只是一行的一部分 file.readlines([count])#把文件每一行作为一个list的一个成员,并返回这个list。
其实它的内部是通过循环调用readline()来实现的。如果提供count参数,count是表示读取内容的总长,也就是说可能只读到文件的一部分。
4.写入文件
write()方法可将任何字符串写入一个打开的文件。write()方法不会在字符串的结尾添加换行符('\n')。
语法:
file.write(str) #把str写到文件中,write()并不会在str后加上一个换行符 file.writelines(seq) #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。
5.文件定位
tell()方法告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后。
seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
6.with语句
为了避免打开文件后忘记关闭,可以通过管理上下文,即:
1 with open('log','r') as f: 2 3 ...
如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
1 with open('log1') as obj1, open('log2') as obj2: 2 pass
7.文件的其他方法
1 file.flush() #刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。 2 file.fileno() #返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。 3 file.isatty() #如果文件连接到一个终端设备返回 True,否则返回 False。 4 file.next() #返回文件下一行