Python生成指定大小文件:txt/图片/视频/csv

这篇具有很好参考价值的文章主要介绍了Python生成指定大小文件:txt/图片/视频/csv。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如题,做测试的懂的都懂,不多解释

相比其他大佬,本脚本基于gpt编写后整理,生成的文件更真实,能够打开预览,看过其他人的生成脚本,只是一个符合大小,但是是空白或不能打开的文件。

话不多说,看示例,记得在创建一个data目录。

代码示例:文章来源地址https://www.toymoban.com/news/detail-643450.html

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_size
    file_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 MB

        if current_filesize >= target_filesize_mb:
            break

    out.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 row

    with 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__':
    # 生成一个大小为2MB的TXT文件
    generate_txt(2)

    # 生成15M视频
    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

到了这里,关于Python生成指定大小文件:txt/图片/视频/csv的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包