0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】ランダムにファイルを生成するプログラムを作る

Posted at

はじめに

今回はランダムな日付のファイルを生成するプログラムを作りました。

実行環境

  • Python 3.11
  • Windows 10

使用ライブラリ

  • os
  • random
  • datetime

このプログラムでは外部ライブラリは使用していないのでpipでのインストールは必要ありません。

実装の準備

randam.pyみたいな適当な名前の.pyファイルを作成して、ファイルを生成させたいフォルダに移動してください。

実装

以下のコードを先程作成した.pyファイルにコピペしてください。
実行すると「sample_[連番]_[ファイルの日付].pdf」という名前のファイルが100個生成されます。

import os
import random
from datetime import datetime, timedelta

# PDFファイルを生成するフォルダを指定
output_folder = '.'

# フォルダが存在しない場合は作成
os.makedirs(output_folder, exist_ok=True)

# ランダムな日付を生成するための関数
def random_date(start, end):
    return start + timedelta(days=random.randint(0, (end - start).days))

# 日付の範囲を設定(例: 2020年1月1日から2023年12月31日)
start_date = datetime(2020, 1, 1)
end_date = datetime(2023, 12, 31)

# 100個のランダムなPDFファイルを生成
for i in range(100):
    # ランダムな日付を生成
    random_modification_date = random_date(start_date, end_date)

    # ファイル名を日付に基づいて作成
    file_name = f"sample_{i+1:03d}_{random_modification_date.strftime('%Y%m%d')}.pdf"
    
    # フルパスを作成
    file_path = os.path.join(output_folder, file_name)
    
    # PDFファイルを作成(空のファイル)
    with open(file_path, 'wb') as f:
        pass  # 空のPDFファイルを作成

    # ファイルの更新日を設定
    os.utime(file_path, (random_modification_date.timestamp(), random_modification_date.timestamp()))

print("ランダムなPDFファイルが生成されました!")

応用

以下の部分の.pdfを作成したいファイルの拡張子に変えることでファイルの種類を変えることができます。

# ファイル名を日付に基づいて作成
file_name = f"sample_{i+1:03d}_{random_modification_date.strftime('%Y%m%d')}.pdf"

おわりに

今回はランダムの日付のファイルを生成するプログラムを作りました。以下の記事のプログラムでのテスト用に作成したプログラムなので気が向いたらそちらの記事も読んでいただけると嬉しいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?