亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
1234下一頁
最近訪問板塊 發(fā)新帖
查看: 10284 | 回復(fù): 36
打印 上一主題 下一主題

求助,python 生成大文件 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-06-14 09:41 |只看該作者 |倒序?yàn)g覽
最近在學(xué)習(xí)python,寫了一個(gè)生成文件的腳本但在生成大文件時(shí)發(fā)現(xiàn)效率比較低,生成一個(gè)5G文件時(shí)等待時(shí)間會(huì)比較長。
以下是自己寫的生成文件腳本,希望高手能優(yōu)化或是給出其它的好的辦法。。。有問題的地方也請高手指出。。。

#coding=utf-8
'''
Created on 2012-5-29

@author: xiaochou
'''

import os
import time

#獲取文件的屬性值
def getfile_att(filepath,*att_type):
    file_stat=os.stat(filepath)
    file_st={}
    if 'fctime' in att_type:
        file_st['fctime']=str(int(file_stat.st_ctime))
    if 'fmtime' in att_type:
        file_st['fmtime']=str(int(file_stat.st_mtime))
    if 'fatime' in att_type:
        file_st['fatime']=str(int(file_stat.st_atime))
    if 'fmode' in att_type:
        file_st['fmode']=str(file_stat.st_mode)
    if 'fsize' in att_type:
        file_st['fsize']=str(int(file_stat.st_size))
    return file_st

def file_size(size):
    local_time = time.strftime("%Y%m%d%H%M%S",time.localtime())
    file_name = "E:\\testFile\\"+str(local_time)+".txt"
    f = open(file_name,'ab')
    note = "測試文件內(nèi)容"
    for i in range(1,99999999):
        f.write(note+str(i))
        filesize = float(getfile_att(file_name,'fsize')["fsize"])
        if filesize/1024/1024 >= size:
            break
        else:
            continue   
    f.close()
    print "ALL down!"

if __name__ == '__main__':
    size = input("input you's size:")
    file_size(size)
print file_size

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-06-14 09:50 |只看該作者
這只是為了好玩嗎?可以寫入任意內(nèi)容還是特定的數(shù)據(jù)?

你在循環(huán)里反復(fù)做這個(gè)操作:
filesize = float(getfile_att(file_name,'fsize')["fsize"])
我覺得還不如設(shè)置個(gè)變量來計(jì)算總共寫入了多少

這有別人的方法,我沒有測試過:
http://stackoverflow.com/questio ... python-in-windows-7

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2012-06-14 09:57 |只看該作者
不是為了玩,我是做測試的,經(jīng)常會(huì)有一些測試數(shù)據(jù)的需要,比如我們需要一個(gè)4.9G的文件。不可能用手工去生成。只能用腳本去生成。。。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2012-06-14 10:02 |只看該作者
內(nèi)容可以隨便寫的,只要是可以生成大文件,且效率比較高就可以。。回復(fù) 2# anonymous0502


   

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2012-06-14 10:02 |只看該作者
哦,其他部分沒怎么看,只是大概看了下時(shí)間應(yīng)該都是花在循環(huán)里吧
干脆在循環(huán)之前就計(jì)算出要生成這個(gè)大小的文件需要循環(huán)多少次,然后就直接循環(huán)這么多次然后結(jié)束,這樣不是就省去了N多的無意義的判斷語句的執(zhí)行。

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2012-06-14 10:03 |只看該作者
每次寫入的數(shù)據(jù)量大一些,估計(jì)也會(huì)快不少吧。

論壇徽章:
2
CU大;照
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
7 [報(bào)告]
發(fā)表于 2012-06-14 10:25 |只看該作者
  1. #!/usr/bin/env python

  2. import os
  3. import time

  4. def create_file_size(size):
  5.     size *= 1024 * 1024
  6.     print size
  7.     local_time = time.strftime("%Y%m%d%H%M%S", time.localtime())
  8.     file_name = str(local_time) + ".txt"
  9.     with open(file_name, 'w') as f:
  10.         note = 'Test File Contents: '
  11.         i = 0
  12.         fsize = 0
  13.         while True:
  14.             i += 1
  15.             text = note + str(i) + "\n"
  16.             f.write(text)
  17.             fsize += len(text)
  18.             if fsize >= size:
  19.                 break
  20.     print "ALL down!"

  21. if __name__ == '__main__':
  22.     size = input("input you's size:")
  23.     create_file_size(size)
復(fù)制代碼
大概生成 5G 文件,在 ubuntu 下需要 1-2 秒吧

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2012-06-14 12:36 |只看該作者
本帖最后由 lian860911 于 2012-06-14 12:40 編輯

  1. bigFile= open(_filename_, 'w')
  2. bigFile.seek(1024*1024*1024* fileSize-1) #大小自己定,需要幾個(gè)G, fileSize就是幾,速度絕對(duì)快
  3. bigFile.write('\x00')
  4. bigFile.close()
復(fù)制代碼

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2012-06-14 13:56 |只看該作者
省去了對(duì)文件屬性的不斷讀取和循環(huán)確實(shí)比我之前的快了很多。。。。在linux下會(huì)很快。。但在windows下也是25分左右,,是不是特別的快。。但學(xué)到了很多。。謝謝了回復(fù) 7# cdtits


   

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2012-06-14 14:01 |只看該作者
太快了。。。一個(gè)10G的文件在windows下只需要1s,瞬間完成。。。太感謝了。。。但不是很了解正在學(xué)習(xí)中。。回復(fù) 8# lian860911


   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP