python 关于文件操作的一些理解

时间:2021-02-22 16:57:49

在用python进行数据处理编程中,往往涉及到文件IO口读写,IO口的读写性能会极大的影响程序的运行时间。在进行文件写入时,一般会存在两种情况。第一种是数据到来马上进行数据写入,即来一条写一条,第二种是数据到来时先存储到内存中,等到数据量存储到一定程度时,再一次性写入文件中。那么,这两种情况孰优孰劣?下面用一个例子展示给大家。

先看第二种情况,程序演示的是:第一次读取1万条数据,存储在列表中,再一次性存储到文件中。每存一万条数据的时间是3.1秒。

#-*- coding: utf-8 -*-
#先读取1万条数据再保存
import os
import time

filename="E:/datacastle/test_file/new.txt"
t=time.time()
data=[]
count =0 
while True:  
        with open("E:/datacastle/test_file/train_data/20140803_train.txt",'r') as f:
                with open(filename,'a') as F:
                        line = f.readline()
                        data.append(line)
                        count +=1
                        if count==10000:
                                print(time.time()-t)
                                F.writelines(data)
                                count=0
                                data=[]
                                t=time.time()
raw_input("over")  

 每存储1万条数据的运行时间如下:

C:\Users\Administrator>python  E:\datacastle\test_file\read_big_file.py
>>3.18099999428
>>3.13100004196
>>3.12999987602
>>3.14100003242

 

再看第二种情况,每读一条数据就存储一条数据,每存储一万条运行的时间约为5秒

#-*- coding: utf-8 -*-
#读一条存一条
import os
import time

filename="E:/datacastle/test_file/new.txt"
t=time.time()
data=[]
count =0 

while True:  
        with open("E:/datacastle/test_file/train_data/20140803_train.txt",'r') as f:
                with open(filename,'a') as F:
                        line = f.readline()
                        F.writelines(line)
                        count +=1
                        if count==10000:
                                print(time.time()-t)
                                count=0
                                t=time.time()

每存储1万条数据的运行时间如下:

C:\Users\Administrator>python  E:\datacastle\test_file\read_big_file.py
>>4.4889998436
>>4.70700001717
>>4.90199995041
>>4.48600006104
>>5.55800008774
>>5.29799985886