Python生成指定大小文件

在平时做实验的过程中,经常需要生成一些测试数据,比如指定文件大小、文件记录数,以及文本型、数字型数据等要求。本文记录使用Python生成指定大小的文件和生成指定数量的数据文件两种方式,以及另一个Python小程序,可以读取文件验证文件的行数,即记录数。

以下程序均为Python3版本。

1. 生成指定大小的文件

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import os
import random

def genSizeFile(fileName, fileSize):
    #file path
    filePath="Data"+fileName+".txt"

    # 生成固定大小的文件
    # date size
    ds=0
    with open(filePath, "w", encoding="utf8") as f:
        while ds<fileSize:
            f.write(str(round(random.uniform(-1000, 1000),2)))
            f.write("\n")
            ds=os.path.getsize(filePath)
    # print(os.path.getsize(filePath))

# start here.
genSizeFile("1k",1*1024)

通过f.write()往文件内写入数据,这里写入的数据是-1000~1000内的随机数浮点数,保留两位小数点。写入的时候如果不是String类型的数据,必须通过str()转换。

2. 生成指定数量的数据文件

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import os
import random

def genNFile(fileNum):
    numCount=fileNum
    numRange=3*numCount

    tmpList=random.sample(range(numRange), numCount)

    i=0
    filePath=""+str(numCount)+".txt"
    with open(filePath, "w", encoding="utf8") as f:
       while i<numCount:
        f.write(str(tmpList[i]))
        f.write("\n")
        i=i+1

genNFile(11000)

文件内容随机,且不重复。

3. 查看文件记录数

主要思想在于统计文件内换行符\n的数量,即为文件的行数。

程序设置了buffer缓存数据,具体大小可以根据自己的文件大小进行调节。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

def countLine(thefilepath):
    count = 0
    with open(thefilepath, 'rb') as thefile:
        while True:
            buffer = thefile.read(100*1024*1024)
            if not buffer:
                break
            count += str(buffer, encoding = "utf8").count('\n')
    print(count)
# thefile.close( )

# here.
path="Data"+"1G"+".txt"
countLine(path)

4. 小结

关于Python的资料很多,生成指定大小文件的方式也有,但是部分资料生成的数据为无意义文本,不适用于某些特定场景。本文记录的程序也不一定适合所有人,不过可以根据已有的程序和实现思路,举一反三,引申、拓展出自己想要的效果。

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值