Python新しいディレクトリにファイル作成・保存する方法|実践サンプルコード集

 

Pythonで新しいディレクトリを作成し、そこにファイルを作成・保存する作業は、データ処理やログ管理で頻繁に使用されます。本記事では、効率的な方法を複数のアプローチで詳しく解説します。

基本的な方法:ディレクトリ作成+ファイル保存

osモジュールを使用

import os

# ディレクトリを作成
os.makedirs('output/data', exist_ok=True)

# 新しいディレクトリにファイルを作成
with open('output/data/result.txt', 'w', encoding='utf-8') as f:
    f.write('処理結果のデータ')

pathlibを使用(推奨)

from pathlib import Path

# ディレクトリ作成とファイル保存を一度に
output_path = Path('output/data')
output_path.mkdir(parents=True, exist_ok=True)

# ファイル作成
(output_path / 'result.txt').write_text('処理結果のデータ', encoding='utf-8')

実践的な使用例

CSVファイルの保存

import csv
from pathlib import Path

# データ準備
data = [['名前', '年齢'], ['田中', 25], ['佐藤', 30]]

# ディレクトリ作成
csv_dir = Path('reports/csv')
csv_dir.mkdir(parents=True, exist_ok=True)

# CSVファイル保存
with open(csv_dir / 'users.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerows(data)

日付別ディレクトリにログ保存

from datetime import datetime
from pathlib import Path

# 今日の日付でディレクトリ名を生成
today = datetime.now().strftime('%Y%m%d')
log_dir = Path(f'logs/{today}')
log_dir.mkdir(parents=True, exist_ok=True)

# ログファイル作成
log_file = log_dir / 'app.log'
with open(log_file, 'a', encoding='utf-8') as f:
    timestamp = datetime.now().strftime('%H:%M:%S')
    f.write(f'[{timestamp}] アプリケーション開始\n')

複数ファイルの一括作成

テンプレートファイルの作成

from pathlib import Path

# プロジェクト構造とファイルを一括作成
project_name = 'my_project'
project_root = Path(project_name)

# ディレクトリとファイルの構造定義
structure = {
    'src': ['main.py', 'config.py'],
    'tests': ['test_main.py'],
    'docs': ['README.md']
}

# 構造に基づいて作成
for dir_name, files in structure.items():
    dir_path = project_root / dir_name
    dir_path.mkdir(parents=True, exist_ok=True)
    
    for file_name in files:
        (dir_path / file_name).write_text('# 自動生成されたファイル\n')

JSONデータの保存

設定ファイルの作成

import json
from pathlib import Path

# 設定データ
config = {
    'database': {'host': 'localhost', 'port': 5432},
    'logging': {'level': 'INFO'}
}

# 設定ディレクトリ作成
config_dir = Path('config')
config_dir.mkdir(exist_ok=True)

# JSON設定ファイル保存
with open(config_dir / 'settings.json', 'w', encoding='utf-8') as f:
    json.dump(config, f, ensure_ascii=False, indent=2)

エラーハンドリング

権限エラーの対処

from pathlib import Path

def safe_create_file(dir_path, file_name, content):
    try:
        # ディレクトリ作成
        Path(dir_path).mkdir(parents=True, exist_ok=True)
        
        # ファイル作成
        file_path = Path(dir_path) / file_name
        file_path.write_text(content, encoding='utf-8')
        
        return f'ファイル作成成功: {file_path}'
    except PermissionError:
        return 'エラー: ディレクトリ作成の権限がありません'
    except Exception as e:
        return f'エラー: {e}'

# 使用例
result = safe_create_file('output/reports', 'summary.txt', 'レポートデータ')
print(result)

効率的な大量ファイル作成

バッチ処理での活用

from pathlib import Path

def create_batch_files(base_dir, file_count=100):
    base_path = Path(base_dir)
    base_path.mkdir(parents=True, exist_ok=True)
    
    for i in range(file_count):
        file_path = base_path / f'file_{i:03d}.txt'
        file_path.write_text(f'ファイル番号: {i}\n')
    
    print(f'{file_count}個のファイルを{base_dir}に作成しました')

# 100個のファイルを一括作成
create_batch_files('batch_output')

まとめ

新しいディレクトリにファイルを作成する際は、pathlib.Pathを使用することで、より Pythonic で読みやすいコードが書けます。mkdir(parents=True, exist_ok=True)を使用してエラーフリーなディレクトリ作成を行い、適切なエラーハンドリングを実装することで、堅牢なファイル操作が可能になります。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座