天天看点

python文件操作

使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。

file_object = open('thefile.txt')

python文件操作

try:

python文件操作

     all_the_text = file_object.read( )

python文件操作

finally:

python文件操作

     file_object.close( )

注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法。

点击(此处)折叠或打开

#coding:utf-8

#!/usr/bin/python

# Filename: fileRW.py

import os

context=""" hello world,hello

"r" 以读方式打开,只能读文件 , 如果文件不存在,会发生异常 

"w" 以写方式打开,只能写文件, 如果文件不存在,创建该文件

                                                     如果文件已存在,先清空,再打开文件"""

def createfileBYwrite(filename):

    f = open(filename,'w') #打开文件open()是file()的别名

    f.write(context) #把字符串写入文件

    f.close() #关闭文件

#注意,调用writelines写入多行在性能上会比使用write一次性写入要高。

def createfileBYwritelines(filename):

    try:

        f.writelines(context) #把字符串写入文件

    finally: 

        f.close() #关闭文件

def readBYreadline(filename):

    f = open(filename)

    while True:

        line =f.readline()#当文件指针移动到末尾继续readline会出现错误,所以后面要加判断

        if line:

            print line,

        else:

            break

    f.close()

#需要通过循环访问readlines()返回列表中的元素

def readBYreadlines(filename):

        lines = f.readlines()

        for line in lines:

    finally:

        f.close()

#从文件中读取所有内容,赋予一个字符串变量

def readBYread(filename):

        content = f.read()

    print content 

if __name__== "__main__":

    filename="hello.txt"

    createfileBYwritelines(filename)

    readBYread(filename)

    #把文件删除掉

    if os.path.exists(filename):

        print "文件存在%s" %filename

        os.remove(filename)

 hello world,hello

"r" 以读方式打开,只能读文件 , 如果文件不存在,会发生异常 

"w" 以写方式打开,只能写文件, 如果文件不存在,创建该文件

                                                     如果文件已存在,先清空,再打开文件

文件存在hello.txt

python文件操作

input = open('data', 'r')

python文件操作

#第二个参数默认为r

python文件操作

input = open('data')

python文件操作

input = open('data', 'rb')

python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作

file_object = open('abinfile', 'rb')

python文件操作
python文件操作

    while True:

python文件操作

         chunk = file_object.read(100)

python文件操作

        if not chunk:

python文件操作
python文件操作

         do_something_with(chunk)

python文件操作
python文件操作
python文件操作

list_of_all_the_lines = file_object.readlines( )

如果文件是文本文件,还可以直接遍历文件对象获取每行:

python文件操作

for line in file_object:

python文件操作

     process line

python文件操作

output = open('data', 'w')

python文件操作

output = open('data', 'wb')

python文件操作

output = open('data', 'w+')

python文件操作

file_object = open('thefile.txt', 'w')

python文件操作

file_object.write(all_the_text)

python文件操作

file_object.close( )

python文件操作

file_object.writelines(list_of_text_strings)

注意,调用writelines写入多行在性能上会比使用write一次性写入要高。

在处理日志文件的时候,常常会遇到这样的情况:日志文件巨大,不可能一次性把整个文件读入到内存中进行处理,例如需要在一台物理内存为 2GB 的机器上处理一个 2GB 的日志文件,我们可能希望每次只处理其中 200MB 的内容。

在 Python 中,内置的 File 对象直接提供了一个 readlines(sizehint) 函数来完成这样的事情。以下面的代码为例:

每次调用 readlines(sizehint) 函数,会返回大约 200MB 的数据,而且所返回的必然都是完整的行数据,大多数情况下,返回的数据的字节数会稍微比 sizehint 指定的值大一点(除最后一次调用 readlines(sizehint) 函数的时候)。通常情况下,Python 会自动将用户指定的 sizehint 的值调整成内部缓存大小的整数倍。

一、用Python创建一个新文件,内容是从0到9的整数, 每个数字占一行:

#python

>>>f=open('f.txt','w')    # r只读,w可写,a追加

>>>for i in range(0,10):f.write(str(i)+'\n')

.  .  .

>>> f.close()

二、文件内容追加,从0到9的10个随机整数:

>>>import random

>>>f=open('f.txt','a')

>>>for i in range(0,10):f.write(str(random.randint(0,9)))

>>>f.write('\n')

>>>f.close()

三、文件内容追加,从0到9的随机整数, 10个数字一行,共10行:

>>> import random

>>> f=open('f.txt','a')

>>> for i in range(0,10):

.  .  .     for i in range(0,10):f.write(str(random.randint(0,9))) 

.  .  .     f.write('\n')    

四、把标准输出定向到文件:

>>> import sys

>>> sys.stdout = open("stdout.txt", "w")

>>>  . . .

五、文件的读写

一、文件打开:

f = file(name[, mode[, buffering]])

入口参数:   name 文件名

                  mode   选项,字符串

                  buffering   是否缓冲 (0=不缓冲,1=缓冲, >1的int数=缓冲区大小)

返回值 : 文件对象

mode 选项:

"r"   以读方式打开,只能读文件 , 如果文件不存在,会发生异常      

                                                     如果文件已存在,先清空,再打开文件

"rb"   以二进制读方式打开,只能读文件 , 如果文件不存在,会发生异常      

"wb" 以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件

"rt"   以文本读方式打开,只能读文件 , 如果文件不存在,会发生异常      

"wt" 以文本写方式打开,只能写文件, 如果文件不存在,创建该文件

"rb+"   以二进制读方式打开,可以读、写文件 , 如果文件不存在,会发生异常      

"wb+" 以二进制写方式打开,可以读、写文件, 如果文件不存在,创建该文件

二、关闭文件

f.close()

当文件读写完毕后,应关闭文件。

三、清空文件内容

f.truncate()

注意:仅当以 "r+"   "rb+"    "w"   "wb" "wb+"等以可写模式打开的文件才可以执行该功能。

四、文件的指针定位与查询

(1)文件指针:

      文件被打开后,其对象保存在 f 中, 它会记住文件的当前位置,以便于执行读、写操作,这个位置称为文件的指针( 一个从文件头部开始计算的字节数 long 类型 )。

(2)文件打开时的位置:

      以"r"   "r+"   "rb+" 读方式, "w"   "w+"   "wb+"写方式 打开的文件,

     一开始,文件指针均指向文件的头部。

(3) 获取文件指针的值:

      L = f.tell()

(4) 移动文件的指针

       f.seek(   偏移量, 选项 )

      选项 =0 时, 表示将文件指针指向从文件头部到 "偏移量"字节处。

      选项 =1 时, 表示将文件指针指向从文件的当前位置,向后移动 "偏移量"字节。

      选项 =2 时, 表示将文件指针指向从文件的尾部,,向前移动 "偏移量"字节。

五、从文件读取指内容   

1 文本文件(以"rt"方式打开的文件)的读取  

          s = f.readline(     )

        返回值: s 是字符串,从文件中读取的一行,含行结束符。

        说明: (1)  如果 len( s ) =0 表示已到文件尾

                    (2)   如果是文件的最后一行,有可能没有行结束符

2 二进制文件(以"rb"、"rb+"、"wb+" 方式打开的文件)的读取  

          s = f.read(    n )

   对于图片、视频等文件必须使用b的模式读写

     说明: (1)  如果 len( s ) =0 表示已到文件尾

                  (2)   文件读取后,文件的指针向后移动 len(s) 字节。

                (3)如果磁道已坏,会发生异常。

六、向文件写入一个字符串   

    f.write(    s )

    参数:       s 要写入的字符串

    说明: (1)文件写入后,文件的指针向后移动 len(s) 字节。

                 (2)如果磁道已坏,或磁盘已满会发生异常。

返回值: s 是字符串,从文件中读取的内容

七、删除文件

import os

os.remove(file)

python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作
python文件操作