您的位置:首页 > 编程语言 > Python开发

Python生成指定大小文件

2016-11-19 11:03 459 查看
在平时做实验的过程中,经常需要生成一些测试数据,比如指定文件大小、文件记录数,以及文本型、数字型数据等要求。本文记录使用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的资料很多,生成指定大小文件的方式也有,但是部分资料生成的数据为无意义文本,不适用于某些特定场景。本文记录的程序也不一定适合所有人,不过可以根据已有的程序和实现思路,举一反三,引申、拓展出自己想要的效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: