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爆速講座


