首页 > 编程语言 > 详细

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

时间:2019-06-04 23:51:49      阅读:178      评论:0      收藏:0      [点我收藏+]

在用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

 

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

原文:https://www.cnblogs.com/mangojun/p/10976971.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!