码迷,mamicode.com
首页 > 编程语言 > 详细

python的文件操作

时间:2017-10-27 21:35:11      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:内容   刷新   file   res   div   指定位置   空字符串   print   部分   

 

一、file读文件

  读写文件是最常见的IO操作。Python内置了读写文件的函数。在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

  读文件需要三个步骤:

  1.要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符。标示符‘r‘表示读。如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在

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

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

  程序代码如下:

import codecs

f = codecs.open(1.txt,r)
print (f.read())
f.close()

  注:codecs模块:主要用来解决文件乱码的问题

  程序运行结果:

技术分享

  读取文件后,对文件进行操作,程序代码如下:

import codecs

f = codecs.open(1.txt)
text = f.read()
print(type(text))
result = text.replace(1,A)
print (result)
f.close()

  程序运行结果如下:

技术分享

 

二、file写文件

  写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符‘w‘或者‘wb‘表示写文本文件或写二进制文件。可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。程序代码如下:

  

import codecs

f = codecs.open(2.txt,wb)
f.write(hello world\n)
f.write(gggdgdsd\n)
f.write(huangdongju\n)
f.write(hello {0}\n.format(momo))
f.write(hello %s\n%huangodngju)
f.close()

  程序运行结果如下:

技术分享

  

三、file常用的方法

  1.readlines():用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。如果碰到结束符 EOF 则返回空字符串。返回list,每一行作为list的单个元素。程序代码如下:

  

import codecs
f = codecs.open(2.txt,rb)
text_list = f.readlines()
print (type(text_list))
print(text_list)
print (text_list[0])
f.close()

  程序运行结果如下:

技术分享

  2.readline():用于从文件读取整行,包括 "\n" 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符。

     next():返回迭代器的下一个项目

   程序代码如下:

import codecs
f = codecs.open(2.txt,rb)
print (f.readline())
print (f.next())
f.close()

  程序运行结果:

  技术分享

 

  3.write():用于向文件中写入指定字符串。

   writelines():用于向文件中写入一序列的字符串。

  程序代码如下:

import codecs
f = codecs.open(3.txt,wb)
f.write(huangdongju\nmomo\n11111\n)
f.writelines([aaaaa\n,bbbbb\n,ccccc\n])
f.close()

  程序运行结果:

技术分享

 

  4.tell():tell() 方法返回文件的当前位置,即文件指针当前位置。程序代码如下:

import codecs
file = codecs.open(4.txt,wb)
file.write(helloworld!\nhuangdongju\n)
print(file.tell())
file.writelines([aaaaa\n,bbbbb\n,ccccc\n])
print (file.tell())
file.close()

  程序运行结果如下:

技术分享

技术分享

  5.seek():seek() 方法用于移动文件读取指针到指定位置。程序代码如下:

import codecs
file = codecs.open(4.txt,wb)
file.write(helloworld!\nhuangdongju\n)
print(file.tell())
file.writelines([aaaaa\n,bbbbb\n,ccccc\n])
print (file.tell())
file.seek(0)
file.write(all or nothing,now or never)
file.close()

  程序运行结果:

技术分享

    5.name属性:读取文件名

     closed属性:关闭文件流返回true,未关闭返回false

    6.flush():flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

 

四、file中with的用法

   在使用文件的时候,经常会忘记关闭文件流,使用with语句可以避免这种情况的发生。程序代码如下:

import codecs

with codecs.open(1.txt,rb) as file:
    print (file.read())
    print (file.closed)
print (file.closed)

  程序运行结果:

技术分享

  打印文件的行号与内容,程序代码如下:

import codecs
with codecs.open(1.txt,rb) as ff:
    for line, value  in enumerate(ff):
         print (line, value)

  程序运行结果如下:

技术分享

  制定行输出,程序代码如下:

import codecs
import linecache

with codecs.open(1.txt,rb) as ff:
    for line, value  in enumerate(ff):
         if line == 4-1:
             print (value)


count  = linecache.getline(1.txt,4)
print (count)    

  程序运行结果:

技术分享

 

   

python的文件操作

标签:内容   刷新   file   res   div   指定位置   空字符串   print   部分   

原文地址:http://www.cnblogs.com/huangdongju/p/7743956.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!