跳转到主要内容

使用虚假数据生成文件。

项目描述

创建带有虚假数据的文件。 在多种格式中。 不费吹灰之力。

PyPI Version Supported Python versions Build Status Documentation Status MIT Coverage

先决条件

本包的所有核心依赖均为 MIT 许可证。本包的大部分可选依赖也都是 MIT 许可证,但也有一些是 BSDApache 2GPLHPND 许可证。

所有许可证均列在下面的括号中。

文档

安装

PyPI 上的最新稳定版本

包含所有依赖项

pip install faker-file[all]

仅核心

pip install faker-file

包含最常见的依赖项

所有内容,除了仅用于数据增强所需的机器学习库

pip install faker-file[common]

支持 DOCX

pip install faker-file[docx]

支持 EPUB

pip install faker-file[epub]

支持图像

pip install faker-file[images]

支持 PDF

pip install faker-file[pdf]

支持 MP3

pip install faker-file[mp3]

支持 XLSX

pip install faker-file[xlsx]

支持 ODS

pip install faker-file[ods]

支持 ODT

pip install faker-file[odt]

支持数据增强

pip install faker-file[data-augmentation]

支持 GoogleCloudStorage

pip install faker-file[gcs]

支持 AzureCloudStorage

pip install faker-file[azure]

支持 AWSS3Storage

pip install faker-file[s3]

或从 GitHub 下载的开发版本

pip install https://github.com/barseghyanartur/faker-file/archive/main.tar.gz

功能

支持的文件类型

  • BIN

  • BMP

  • CSV

  • DOCX

  • EML

  • EPUB

  • ICO

  • GIF

  • JPEG

  • JSON

  • MP3

  • ODS

  • ODT

  • ODP

  • PDF

  • PNG

  • RTF

  • PPTX

  • SVG

  • TAR

  • TIFF

  • TXT

  • WEBP

  • XLSX

  • XML

  • ZIP

对于所有图像格式(BMPICOGIFJPEGPNGSVGTIFFWEBP)和 PDF,都提供了纯图形和混合内容文件提供程序(还具有文本到图像的功能)。

其他提供程序

  • AugmentFileFromDirProvider:从指定的目录中随机选择文件制作增强副本。支持以下类型:DOCXEMLEPUBODTPDFRTFTXT

  • AugmentRandomImageFromDirProvider:从指定的目录中增强随机图像文件。支持以下类型:BMPGIFJPEGPNGTIFFWEBP

  • AugmentImageFromPathProvider:从指定的路径中增强图像文件。支持的文件类型与 AugmentRandomImageFromDirProvider 提供器相同。

  • GenericFileProvider:从原始字节或预定义模板创建任何格式的文件。

  • RandomFileFromDirProvider:从指定的目录中随机选择文件。

  • FileFromPathProvider:从指定的路径获取文件。

支持的文件存储

  • 本地文件系统存储

  • AWS S3 存储

  • Azure 云存储

  • Google 云存储

  • SFTP 存储

使用示例

使用 Faker

推荐方式

如果您只需要返回 bytes(而不是创建文件),请提供 raw=True 参数(适用于所有提供器类和内部函数)

但这也可以工作

from faker import Faker
from faker_file.providers.txt_file import TxtFileProvider

FAKER = Faker()

file = TxtFileProvider(FAKER).txt_file()

如果您只需要 bytes 返回

from faker import Faker
from faker_file.providers.txt_file import TxtFileProvider

FAKER = Faker()

raw = TxtFileProvider(FAKER).txt_file(raw=True)

使用 factory_boy

upload/models.py

from django.db import models

class Upload(models.Model):

    # ...
    file = models.FileField()

upload/factories.py

注意,当使用 faker-fileDjango 和本地文件系统存储时,您需要将您的 MEDIA_ROOT 设置作为 root_path 值传递给选定的文件存储,如下所示。

import factory
from django.conf import settings
from factory import Faker
from factory.django import DjangoModelFactory
from faker_file.providers.docx_file import DocxFileProvider
from faker_file.storages.filesystem import FileSystemStorage

from upload.models import Upload

FS_STORAGE = FileSystemStorage(
    root_path=settings.MEDIA_ROOT,
    rel_path="tmp"
)
factory.Faker.add_provider(DocxFileProvider)

class UploadFactory(DjangoModelFactory):

    # ...
    file = Faker("docx_file", storage=FS_STORAGE)

    class Meta:
        model = Upload

元数据

任何文件提供器文件生成函数的返回值是 StringValueBytesValue,分别继承自 strbytes

字符串值和字节值实例都有一个名为 data 的元数据属性(类型为 dict)。各种文件提供者使用 data 来存储元数据,例如 filename(生成文件的绝对路径;对所有文件提供者有效),或 content(生成文件时使用的文本;对大多数文件提供者有效,但除 FileFromPathProviderRandomFileFromDirProviderTarFileProviderZipFileProvider 之外)。

所有文件提供者都将生成文件的绝对路径存储在 data 属性的 filename 键中,以及存储在 storage 键中使用的存储实例。下表显示了详细信息。

键名

文件提供者

filename

all

storage

all

content

所有除 FileFromPathProvider、RandomFileFromDirProvider、TarFileProvider、ZipFileProvider 以外的提供者,以及所有图形文件提供者,如 GraphicBmpFileProvider、GraphicGifFileProvider、GraphicIcoFileProvider、GraphicJpegFileProvider、GraphicPdfFileProvider、GraphicPngFileProvider、GraphicTiffFileProvider 和 GraphicWebpFileProvider

inner

仅 EmlFileProvider、TarFileProvider 和 ZipFileProvider

文件存储

所有文件操作都委托给存储的单独抽象层。

以下存储已实现

  • FileSystemStorage:没有额外要求。

  • PathyFileSystemStorage:需要 pathy

  • AzureCloudStorage:需要 pathy 和与 Azure 相关的依赖项。

  • GoogleCloudStorage:需要 pathy 和与 Google Cloud 相关的依赖项。

  • AWSS3Storage:需要 pathy 和与 AWS S3 相关的依赖项。

  • SFTPStorage:需要 paramiko 和相关依赖项。

使用存储的示例

FileSystemStorage 示例

本地文件系统存储。没有依赖项。

  • root_path:根目录的路径。以 Django 为例,这将是指向 MEDIA_ROOT 目录的路径。重要的是要知道,root_path 不会嵌入到文件的字符串表示中。只有 rel_path 会。

  • rel_path:从根目录的相对路径。以 Django 为例,这将是指向文件的其余路径。

import tempfile
from faker import Faker
from faker_file.providers.txt_file import TxtFileProvider
from faker_file.storages.filesystem import FileSystemStorage

FS_STORAGE = FileSystemStorage(
    root_path=tempfile.gettempdir(),  # Use settings.MEDIA_ROOT for Django
    rel_path="tmp",
)

FAKER = Faker()

file = TxtFileProvider(FAKER).txt_file(storage=FS_STORAGE)

FS_STORAGE.exists(file)

PathyFileSystemStorage 示例

本地文件系统存储。需要 pathy

import tempfile
from pathy import use_fs
from faker import Faker
from faker_file.providers.txt_file import TxtFileProvider
from faker_file.storages.cloud import PathyFileSystemStorage

use_fs(tempfile.gettempdir())
PATHY_FS_STORAGE = PathyFileSystemStorage(
    bucket_name="bucket_name",
    root_path="tmp",
    rel_path="sub-tmp",
)

FAKER = Faker()

file = TxtFileProvider(FAKER).txt_file(storage=PATHY_FS_STORAGE)

PATHY_FS_STORAGE.exists(file)

AWSS3Storage 示例

AWS S3 存储。需要 pathyboto3

from faker import Faker
from faker_file.providers.txt_file import TxtFileProvider
from faker_file.storages.aws_s3 import AWSS3Storage

S3_STORAGE = AWSS3Storage(
    bucket_name="bucket_name",
    root_path="tmp",  # Optional
    rel_path="sub-tmp",  # Optional
    # Credentials are optional too. If your AWS credentials are properly
    # set in the ~/.aws/credentials, you don't need to send them
    # explicitly.
    credentials={
        "key_id": "YOUR KEY ID",
        "key_secret": "YOUR KEY SECRET"
    },
)

FAKER = Faker()

file = TxtFileProvider(FAKER).txt_file(storage=S3_STORAGE)

S3_STORAGE.exists(file)

测试

只需输入

pytest -vrx

或使用 tox

tox

或使用 tox 检查特定环境

tox -e py310-django41

编写文档

保持以下层次结构。

=====
title
=====

header
======

sub-header
----------

sub-sub-header
~~~~~~~~~~~~~~

sub-sub-sub-header
^^^^^^^^^^^^^^^^^^

sub-sub-sub-sub-header
++++++++++++++++++++++

sub-sub-sub-sub-sub-header
**************************

许可证

MIT

支持

有关安全问题,请通过在 作者 部分提供的电子邮件与我联系。

有关总体问题,请访问 GitHub

作者

Artur Barseghyan <artur.barseghyan@gmail.com>

引用

请在您的研究中引用 faker-file 时使用以下条目

@software{faker-file,
  author = {Artur Barseghyan},
  title = {faker-file: Create files with fake data. In many formats. With no efforts.},
  year = {2022-2024},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {https://github.com/barseghyanartur/faker-file},
}

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面