Python学习笔记6(文件操作)

简单的讲,对文件的操作流程可以为以下三步

  • 打开文件,得到文件句柄并且赋值给一个变量
  • 通过句柄对文件进行操作
  • 关闭文件

1.打开文件

你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。

语法:

1 file = open(file_name [, access_mode][, buffering])

各个参数的细节如下:

  1. file_name,文件名
  2. access_mode,打开方式,具体见下面的表格,如果不写默认为‘r
  3. 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()  #返回文件下一行

 

posted @ 2017-08-18 14:30  爱锁屏  阅读(189)  评论(0编辑  收藏  举报