如题,做测试的懂的都懂,不多解释
相比其他大佬,本脚本基于gpt编写后整理,生成的文件更真实,能够打开预览,看过其他人的生成脚本,只是一个符合大小,但是是空白或不能打开的文件。
话不多说,看示例,记得在创建一个data目录。
代码示例:
import os
import time
import csv
from PIL import Image
import random
import numpy as np
import imageio
import cv2# pip install opencv-python
# pip install Pillow
def generate_txt(file_size):file_size_bytes = 1024 * 1024 * file_sizefile_path = './data/txt' + time.strftime('%Y%m%d') + '_' + str(file_size) + 'M.txt'text = "Women only affect the speed at which I type Pythong code." # 要重复的文本text_size_bytes = len(text.encode('utf-8')) # 每个重复的文本的大小(以字节为单位)repetitions = file_size_bytes // text_size_bytes # 需要重复的次数remainder = file_size_bytes % text_size_bytes # 剩余的字节数with open(file_path, 'w') as file:for _ in range(repetitions):file.write(text)if remainder > 0:file.write(text[:remainder])print("生成完成")def generate_video(target_filesize_mb, frame_width=1920, frame_height=1080, frame_rate=30):temp_filename = './data/image' + time.strftime('%Y%m%d') + '_' + str(target_filesize_mb) + 'M.mp4'fourcc = cv2.VideoWriter_fourcc(*"mp4v")out = cv2.VideoWriter(temp_filename, fourcc, frame_rate, (frame_width, frame_height))while True:frame = np.random.randint(0, 256, (frame_height, frame_width, 3), dtype=np.uint8)out.write(frame)current_filesize = (len(open(temp_filename, "rb").read())) / (1024 * 1024) # in MBif current_filesize >= target_filesize_mb:breakout.release()def generate_image(memory_size, filename):""":param memory_size: 生成图片的大小,单位是m:param filename: 生成图片的文件格式:return:"""filename = './data/image'+ time.strftime('%Y%m%d') +'_'+ str(memory_size) + 'M' '.'+filename# 计算所需的像素数量num_pixels = (memory_size * 1024 * 1024) // 3 # 每个像素占用 3 个字节(RGB模式)# 根据像素数量计算图片的长和宽img_width = int(np.sqrt(num_pixels))img_height = int(num_pixels / img_width)# 创建一个随机颜色的数组pixels = np.random.randint(0, 256, (img_height, img_width, 3), dtype=np.uint8)# 根据数组创建图片对象image = Image.fromarray(pixels, 'RGB')image.save(filename)def generate_csv(target_memory_mb):file_name = './data/csv_utf8 ' + time.strftime('%Y%m%d') +"_"+ str(target_memory_mb) + 'M.csv'row_data = "Data" * 100 # Adjust length to control memory usage per rowwith open(file_name, 'w', newline='', encoding='utf-8') as csv_file:writer = csv.writer(csv_file)while os.path.getsize(file_name) / (1024 * 1024) < target_memory_mb:writer.writerow([row_data])if __name__ == '__main__':# 生成一个大小为10MB的PDF文件generate_txt(2)generate_video(target_filesize_mb=15)# 生成一个10M 的png的图片generate_image(10, "png")# 以utf-8的格式,生成一个10M的csv文件 CSV 文件的大小通常由数据量和内容决定,而不是像 Excel 那样可以直接控制行高和列宽。CSV 文件的大小可能会受到编码和分隔符的影响generate_csv(target_memory_mb=10) # Change target memory size as needed