python如何生成指定文件大小

2025-06-05 03:50

本文主要是介绍python如何生成指定文件大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教...

python生成指定文件大小

方法一(速度最快)

def create_file_fast(file_path, size_mb):
    """快速生成指定大小的空文件(全0填充)"""
    size_bytes = size_mb * 1024 * 1024
    with open(file_path, 'wb') as f:
        f.seek(size_bytes - 1)  # 定位到文件末尾前一字节
        f.write(b'\0')          # 写入单个空字节

# 示例:生成500MB文件
if __name__ == '__main__:
	create_file_fast('100mb_file.bin', 500)

方法二(中等速度)

import os
import random

def create_random_file(file_path, size_mb):
    """生成包含随机内容的文件"""
    size_bytes = size_mb * 1024 * 1024
    chunk_size = 1024 * 1024  # 每次写入1MB
    
    with open(file_path, 'wb') as f:
        while size_bphpytes > 0:
            chunk = min(chunk_size, size_bytes)
            # 生成随机字节数据(比os.urandom更快)
            data = bytes(random.getrandbits(8) for _ in range(chunk))
            f.write(data)
            size_bytes -= chunk

# 示例:生成500MB文件
if __name__ == '__main__:
	create_random_file('random_500mb.bin', 500)

方法三(生成可读文本文件–较慢)

import string
import random

def create_text_file(file_path, size_mb, line_length=80):
    """生成包含随机文本的文件(带换行符)"""
    size_bytes = size_mb * 1024 * 1024
    chars = string.ascii_letters + string.digits + string.punctuation + ' '
    
    with open(file_path, 'w') as f:
        while size_bytes > 0:
            # 生成一行文本
            line = ''.join(random.choices(chars, k=line_length))
            line += '\n'  # 添加换行符
            
            f.write(line)
            size_bytes -= len(line.encode('utf-8'))  # 计算UTF-8编码后的字节大小

# 示例:生成500MB文本文件
if __name__ == '__main__:
	create_text_file('10mb_text.txt', 500)

方法四(使用内存映射高效生成–超大文件)

import mmap
import os

def create_large_file(file_path, size_gb):
    """高效生成超大文件(GB级别)"""
    size_bytes = size_gb * 1024 ** 3
    
    # 创建空文件并设置大小
    with open(file_path, 'wb') as f:
        f.truncate(size_bytes)
    
    # 使用内存映射填充随机数据
    with open(file_path, 'r+b') as f:
        mm = mmap.mmap(f.fileno(), 0)
        chunk_size = 1024 * 1024 * 100  # 每次处理100MB
        for offset in range(0, size_bytes, chunk_size):
            end = min(offset + chunk_size, size_bytes)
            mm[offset:end] = os.urandom(end - offset)
        mm.close()

# 示例:生成5GB文件
if __name__ == '__main__:
	create_large_file('5gb_file.dat', 5)

方法五(生成特定模式文件)

def create_pattern_file(file_path, size_mb, pattern=b'ABCD'):
    """生成重复模式的文件(用于测试)"""
    size_bytes = size_mb * 1024 * 1024
    pattern_len = len(pattern)
    
    with open(file_path, 'wb') as f:
        # 计算完整模式块数量
        full_blocks = size_bytes // pattern_len
        # 剩余字节
        remainder = size_bytes % pattern_len
        
        # 写入完整块
        for _ in range(full_blocks):
            f.write(pattern)
        
        # 写入剩余部分
        if remainder:
            f.write(pattern[:remainder])

# 示例:生成500MB的重复模式文件
if __name__ == '__main__:
	create_pattern_file('pattern_50mb.dat', 500, b'TESTPATTERN')

方法六

def run(file_size):
    #输入的文件大小去除首尾空格后切割,如果列表中只有一个数字说明是整数,否则就是小数
    file_path = "D:/dir/"
    file_size = file_size
    print('file_size', file_size)
    new_file_size = file_size.strip()
    file_size_lis编程t = new_file_size.split(".")
    start = time.time()
    if len(file_size_list) == 1:
        int_size_mb(file_size)
        print("文件www.chinasem.cn大小{}MB,已存入地址{}".format(file_size, file_path))
    else:
        int_size_mb(file_size)
        float_size_mb(file_size)
        print("文件大小{}MB,已存入地址{}".format(file_size,file_path))
    end = time.time()
    timer = end - start
    speed = float(file_size) / timer
    # print(start, end, timer, speed)
    logger.info('写入文件共耗时:' + str(timer) + ',写入速度为:' + str(speed))
def int_size_mb(file_size):
    file_path = "D:/dir/"
    file_name = 'test_filepython'
    new_file_size = file_size.strip()
    file_size_list = new_file_size.split(".")
    #整数部分用写入文件w方式
    with open(file_path+file_name,"w") as file:
        #b-kb-mb文件大小转化
        for i in range(int(file_size_list[0])):
            for j in range(1php024):
                file.write("01"*512)
def float_size_mb(file_size):
    file_path = "D:/dir/"
    file_name = 'test_file'
    new_file_size = file_size.strip()
    file_size_list = new_file_size.split(".")
    #小数部分用追加写入a方法
    file_size = file_size
    with open(file_path+file_name,"a") as file:
        #获取小数(单位mb)
        float_size_mb=float(file_size)-int(file_size_list[0])
        for i in range(1024):
            file.write("1"*int(1024*float_size_mb))

# 示例:生成500MB的文件           
if __name__ == '__main__':
	run(500)
	

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(www.chinasem.cn)。

这篇关于python如何生成指定文件大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154910

相关文章

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Macos创建python虚拟环境的详细步骤教学

《Macos创建python虚拟环境的详细步骤教学》在macOS上创建Python虚拟环境主要通过Python内置的venv模块实现,也可使用第三方工具如virtualenv,下面小编来和大家简单聊聊... 目录一、使用 python 内置 venv 模块(推荐)二、使用 virtualenv(兼容旧版 P

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结