[Python] デスクトップにフォルダを作成する方法

Pythonでデスクトップにフォルダを作成するには、osモジュールやpathlibモジュールを使用します。

まず、デスクトップのパスを取得する必要があります。

os.path.expanduser("~")を使うと、ユーザーのホームディレクトリが取得でき、そこに/Desktopを追加することでデスクトップのパスが得られます。

次に、os.makedirs()pathlib.Path.mkdir()を使ってフォルダを作成します。

この記事でわかること
  • Pythonでフォルダを作成する方法
  • osとpathlibの使い方
  • GUIを使ったフォルダ作成の実装
  • フォルダ作成後のファイル操作
  • フォルダ作成の自動化の応用例

目次から探す

Pythonでデスクトップにフォルダを作成する基本手順

Pythonを使ってデスクトップにフォルダを作成する方法を解説します。

ここでは、osモジュールとpathlibモジュールを使用した方法を紹介します。

デスクトップのパスを取得する方法

デスクトップのパスは、ユーザーのホームディレクトリに基づいて取得できます。

以下のコードを使って、デスクトップのパスを取得することができます。

import os
# ユーザーのホームディレクトリを取得
home_directory = os.path.expanduser("~")
# デスクトップのパスを作成
desktop_path = os.path.join(home_directory, "Desktop")
print(desktop_path)
/Users/username/Desktop

このコードでは、os.path.expanduser("~")を使ってユーザーのホームディレクトリを取得し、os.path.join()でデスクトップのパスを作成しています。

osモジュールを使ったフォルダ作成

osモジュールを使用してフォルダを作成するには、os.makedirs()関数を使います。

この関数は、指定したパスにフォルダを作成します。

import os
# デスクトップのパスを取得
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
# 作成するフォルダ名
folder_name = "新しいフォルダ"
# フォルダのフルパス
folder_path = os.path.join(desktop_path, folder_name)
# フォルダを作成
os.makedirs(folder_path, exist_ok=True)
print(f"{folder_name}を作成しました。")
新しいフォルダを作成しました。

このコードでは、os.makedirs()を使って新しいフォルダを作成しています。

exist_ok=Trueを指定することで、フォルダが既に存在する場合でもエラーが発生しません。

pathlibモジュールを使ったフォルダ作成

pathlibモジュールは、パス操作をより直感的に行うためのモジュールです。

以下のコードでは、pathlibを使ってフォルダを作成します。

from pathlib import Path
# デスクトップのパスを取得
desktop_path = Path.home() / "Desktop"
# 作成するフォルダ名
folder_name = "新しいフォルダ"
# フォルダのフルパス
folder_path = desktop_path / folder_name
# フォルダを作成
folder_path.mkdir(exist_ok=True)
print(f"{folder_name}を作成しました。")
新しいフォルダを作成しました。

このコードでは、Path.home()を使ってホームディレクトリを取得し、/演算子を使ってパスを結合しています。

mkdir()メソッドでフォルダを作成し、exist_ok=Trueを指定することで、既存のフォルダに対するエラーを回避しています。

フォルダが既に存在する場合の対処法

フォルダを作成する際に、既に同名のフォルダが存在する場合はエラーが発生します。

これを回避するためには、exist_ok=Trueを指定するか、事前にフォルダの存在を確認する方法があります。

import os
# デスクトップのパスを取得
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
folder_name = "新しいフォルダ"
folder_path = os.path.join(desktop_path, folder_name)
# フォルダの存在確認
if not os.path.exists(folder_path):
    os.makedirs(folder_path)
    print(f"{folder_name}を作成しました。")
else:
    print(f"{folder_name}は既に存在します。")
新しいフォルダは既に存在します。

このコードでは、os.path.exists()を使ってフォルダの存在を確認し、存在しない場合のみフォルダを作成しています。

これにより、エラーを防ぐことができます。

osモジュールを使ったフォルダ作成の詳細

osモジュールは、Pythonでファイルやディレクトリを操作するための便利な機能を提供します。

ここでは、osモジュールを使ったフォルダ作成の詳細について解説します。

os.makedirs()の使い方

os.makedirs()関数は、指定したパスにフォルダを作成するための関数です。

この関数は、親フォルダが存在しない場合でも、必要なフォルダをすべて作成します。

import os
# 作成するフォルダのパス
folder_path = os.path.join(os.path.expanduser("~"), "Desktop", "新しいフォルダ", "サブフォルダ")
# フォルダを作成
os.makedirs(folder_path, exist_ok=True)
print(f"{folder_path}を作成しました。")
/Users/username/Desktop/新しいフォルダ/サブフォルダを作成しました。

このコードでは、os.makedirs()を使って、指定したパスにフォルダを作成しています。

exist_ok=Trueを指定することで、既にフォルダが存在してもエラーが発生しません。

フォルダの存在確認とエラーハンドリング

フォルダを作成する前に、そのフォルダが既に存在するかどうかを確認することが重要です。

以下のコードでは、フォルダの存在を確認し、エラーハンドリングを行っています。

import os
# 作成するフォルダのパス
folder_path = os.path.join(os.path.expanduser("~"), "Desktop", "新しいフォルダ")
# フォルダの存在確認
if not os.path.exists(folder_path):
    os.makedirs(folder_path)
    print(f"{folder_path}を作成しました。")
else:
    print(f"{folder_path}は既に存在します。")
/Users/username/Desktop/新しいフォルダは既に存在します。

このコードでは、os.path.exists()を使ってフォルダの存在を確認し、存在しない場合のみフォルダを作成しています。

これにより、エラーを防ぐことができます。

パーミッションエラーの対処法

フォルダを作成する際に、パーミッションエラーが発生することがあります。

これは、指定したパスに対する書き込み権限がない場合に起こります。

このエラーを処理するためには、try-exceptブロックを使用します。

import os
# 作成するフォルダのパス
folder_path = os.path.join(os.path.expanduser("~"), "Desktop", "新しいフォルダ")
try:
    os.makedirs(folder_path, exist_ok=True)
    print(f"{folder_path}を作成しました。")
except PermissionError:
    print(f"{folder_path}の作成に失敗しました。パーミッションを確認してください。")
/Users/username/Desktop/新しいフォルダを作成しました。

このコードでは、tryブロック内でフォルダを作成し、PermissionErrorが発生した場合にエラーメッセージを表示します。

これにより、ユーザーはパーミッションの問題を認識できます。

再帰的にフォルダを作成する方法

os.makedirs()は、再帰的にフォルダを作成するための便利な関数です。

親フォルダが存在しない場合でも、必要なフォルダをすべて作成します。

以下のコードでは、複数の階層を持つフォルダを作成します。

import os
# 作成するフォルダのパス
folder_path = os.path.join(os.path.expanduser("~"), "Desktop", "新しいフォルダ", "サブフォルダ", "さらにサブフォルダ")
# フォルダを再帰的に作成
os.makedirs(folder_path, exist_ok=True)
print(f"{folder_path}を作成しました。")
/Users/username/Desktop/新しいフォルダ/サブフォルダ/さらにサブフォルダを作成しました。

このコードでは、os.makedirs()を使用して、複数の階層を持つフォルダを一度に作成しています。

exist_ok=Trueを指定することで、既に存在する場合でもエラーが発生しません。

これにより、複雑なフォルダ構造を簡単に作成できます。

pathlibモジュールを使ったフォルダ作成の詳細

pathlibモジュールは、Python 3.4以降で利用可能な、パス操作をより直感的に行うためのモジュールです。

ここでは、pathlibを使ったフォルダ作成の詳細について解説します。

pathlib.Path.mkdir()の使い方

pathlibモジュールのPathクラスを使用してフォルダを作成するには、mkdir()メソッドを使用します。

このメソッドは、指定したパスにフォルダを作成します。

from pathlib import Path
# 作成するフォルダのパス
folder_path = Path.home() / "Desktop" / "新しいフォルダ"
# フォルダを作成
folder_path.mkdir()
print(f"{folder_path}を作成しました。")
/Users/username/Desktop/新しいフォルダを作成しました。

このコードでは、Path.home()を使ってホームディレクトリを取得し、/演算子を使ってパスを結合しています。

mkdir()メソッドでフォルダを作成しています。

exist_okオプションの活用

mkdir()メソッドには、exist_okというオプションがあります。

このオプションをTrueに設定すると、指定したフォルダが既に存在する場合でもエラーが発生しません。

from pathlib import Path
# 作成するフォルダのパス
folder_path = Path.home() / "Desktop" / "新しいフォルダ"
# フォルダを作成(既に存在してもエラーにならない)
folder_path.mkdir(exist_ok=True)
print(f"{folder_path}を作成しました。")
/Users/username/Desktop/新しいフォルダを作成しました。

このコードでは、exist_ok=Trueを指定することで、フォルダが既に存在する場合でもエラーを回避しています。

パスの結合と操作の簡便さ

pathlibモジュールでは、パスの結合や操作が非常に簡単です。

/演算子を使ってパスを直感的に結合できるため、可読性が高くなります。

from pathlib import Path
# デスクトップのパスを取得
desktop_path = Path.home() / "Desktop"
# 作成するフォルダのパス
folder_path = desktop_path / "新しいフォルダ" / "サブフォルダ"
# フォルダを作成
folder_path.mkdir(parents=True, exist_ok=True)
print(f"{folder_path}を作成しました。")
/Users/username/Desktop/新しいフォルダ/サブフォルダを作成しました。

このコードでは、parents=Trueを指定することで、親フォルダが存在しない場合でも再帰的にフォルダを作成しています。

pathlibを使うことで、パス操作が非常に簡単になります。

pathlibを使うメリットとデメリット

pathlibモジュールには、いくつかのメリットとデメリットがあります。

スクロールできます
メリットデメリット
直感的なパス操作が可能Python 3.4以降でしか使用できない
可読性が高く、コードがシンプルになる一部の古いライブラリとの互換性がない
オブジェクト指向のアプローチ学習コストがある場合がある

pathlibは、特に新しいプロジェクトやPython 3.4以降の環境での使用が推奨されます。

直感的な操作が可能で、可読性の高いコードを書くことができるため、フォルダやファイルの操作に非常に便利です。

ただし、古いバージョンのPythonや一部のライブラリとの互換性に注意が必要です。

応用例:フォルダ作成の自動化

フォルダ作成の自動化は、特定のニーズに応じて効率的に作業を行うために非常に便利です。

ここでは、日付や時間を使ったフォルダ名の自動生成、特定の条件に基づくフォルダ作成、複数のフォルダを一度に作成する方法、サブフォルダを含む階層構造の作成について解説します。

日付や時間を使ったフォルダ名の自動生成

日付や時間を使ってフォルダ名を自動生成することで、整理整頓が容易になります。

以下のコードでは、現在の日付を使ってフォルダ名を作成します。

import os
from datetime import datetime
# 現在の日付を取得
current_date = datetime.now().strftime("%Y-%m-%d")
# デスクトップのパスを取得
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
# フォルダ名を作成
folder_name = f"バックアップ_{current_date}"
folder_path = os.path.join(desktop_path, folder_name)
# フォルダを作成
os.makedirs(folder_path, exist_ok=True)
print(f"{folder_name}を作成しました。")
バックアップ_2023-10-01を作成しました。

このコードでは、datetimeモジュールを使って現在の日付を取得し、フォルダ名に組み込んでいます。

特定の条件に基づくフォルダ作成

特定の条件に基づいてフォルダを作成することも可能です。

例えば、特定のファイルが存在する場合にのみフォルダを作成する場合のコードは以下の通りです。

import os
# チェックするファイルのパス
file_path = os.path.join(os.path.expanduser("~"), "Desktop", "重要なファイル.txt")
# フォルダを作成する条件
if os.path.exists(file_path):
    folder_path = os.path.join(os.path.expanduser("~"), "Desktop", "重要なフォルダ")
    os.makedirs(folder_path, exist_ok=True)
    print(f"{folder_path}を作成しました。")
else:
    print("重要なファイルが存在しないため、フォルダは作成されませんでした。")
重要なフォルダを作成しました。

このコードでは、指定したファイルが存在する場合にのみフォルダを作成します。

複数のフォルダを一度に作成する方法

複数のフォルダを一度に作成するには、リストを使ってフォルダ名を管理し、ループを使って作成します。

import os
# 作成するフォルダ名のリスト
folder_names = ["プロジェクトA", "プロジェクトB", "プロジェクトC"]
# デスクトップのパスを取得
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
# フォルダを一度に作成
for folder_name in folder_names:
    folder_path = os.path.join(desktop_path, folder_name)
    os.makedirs(folder_path, exist_ok=True)
    print(f"{folder_name}を作成しました。")
プロジェクトAを作成しました。
プロジェクトBを作成しました。
プロジェクトCを作成しました。

このコードでは、リストに含まれるフォルダ名を使って、デスクトップに複数のフォルダを一度に作成しています。

サブフォルダを含む階層構造の作成

サブフォルダを含む階層構造を作成することも可能です。

以下のコードでは、親フォルダの下に複数のサブフォルダを作成します。

import os
# 親フォルダのパス
parent_folder = os.path.join(os.path.expanduser("~"), "Desktop", "プロジェクト")
# サブフォルダ名のリスト
subfolder_names = ["ドキュメント", "画像", "コード"]
# 親フォルダを作成
os.makedirs(parent_folder, exist_ok=True)
# サブフォルダを作成
for subfolder_name in subfolder_names:
    subfolder_path = os.path.join(parent_folder, subfolder_name)
    os.makedirs(subfolder_path, exist_ok=True)
    print(f"{subfolder_name}を作成しました。")
ドキュメントを作成しました。
画像を作成しました。
コードを作成しました。

このコードでは、親フォルダを作成した後、その下に複数のサブフォルダを作成しています。

これにより、整理されたフォルダ構造を簡単に作成できます。

応用例:フォルダ作成後のファイル操作

フォルダを作成した後、ファイル操作を行うことがよくあります。

ここでは、フォルダ内にファイルを作成する方法、フォルダ内のファイルをリスト化する方法、フォルダ内のファイルを移動・削除する方法について解説します。

フォルダ内にファイルを作成する方法

フォルダ内にファイルを作成するには、open()関数を使用します。

以下のコードでは、先ほど作成したフォルダ内にテキストファイルを作成します。

import os
# 作成するフォルダのパス
folder_path = os.path.join(os.path.expanduser("~"), "Desktop", "新しいフォルダ")
# 作成するファイルのパス
file_path = os.path.join(folder_path, "sample.txt")
# フォルダが存在しない場合は作成
os.makedirs(folder_path, exist_ok=True)
# ファイルを作成
with open(file_path, 'w', encoding='utf-8') as file:
    file.write("これはサンプルファイルです。")
print(f"{file_path}を作成しました。")
/Users/username/Desktop/新しいフォルダ/sample.txtを作成しました。

このコードでは、指定したフォルダ内にsample.txtというファイルを作成し、サンプルテキストを書き込んでいます。

フォルダ内のファイルをリスト化する方法

フォルダ内のファイルをリスト化するには、os.listdir()関数を使用します。

以下のコードでは、指定したフォルダ内のファイルをリスト化して表示します。

import os
# フォルダのパス
folder_path = os.path.join(os.path.expanduser("~"), "Desktop", "新しいフォルダ")
# フォルダ内のファイルをリスト化
files = os.listdir(folder_path)
print("フォルダ内のファイル:")
for file in files:
    print(file)
フォルダ内のファイル:
sample.txt

このコードでは、指定したフォルダ内のファイル名をリスト化し、表示しています。

フォルダ内のファイルを移動・削除する方法

フォルダ内のファイルを移動するには、shutilモジュールのmove()関数を使用します。

また、ファイルを削除するには、os.remove()関数を使用します。

以下のコードでは、ファイルの移動と削除を行います。

import os
import shutil
# 元のファイルのパス
original_file_path = os.path.join(os.path.expanduser("~"), "Desktop", "新しいフォルダ", "sample.txt")
# 移動先のフォルダのパス
destination_folder = os.path.join(os.path.expanduser("~"), "Desktop", "移動先フォルダ")
# 移動先のファイルのパス
moved_file_path = os.path.join(destination_folder, "sample.txt")
# 移動先のフォルダを作成
os.makedirs(destination_folder, exist_ok=True)
# ファイルを移動
shutil.move(original_file_path, moved_file_path)
print(f"{original_file_path}を{destination_folder}に移動しました。")
# 移動したファイルを削除
os.remove(moved_file_path)
print(f"{moved_file_path}を削除しました。")
/Users/username/Desktop/新しいフォルダ/sample.txtを/Users/username/Desktop/移動先フォルダに移動しました。
/Users/username/Desktop/移動先フォルダ/sample.txtを削除しました。

このコードでは、shutil.move()を使ってファイルを移動し、os.remove()を使って移動したファイルを削除しています。

これにより、フォルダ内のファイルを効率的に管理できます。

応用例:GUIを使ったフォルダ作成

GUI(グラフィカルユーザーインターフェース)を使ってフォルダを作成することは、ユーザーにとって直感的で使いやすい方法です。

ここでは、tkinterを使ったフォルダ作成ダイアログの実装、PyQtを使ったフォルダ作成のGUIアプリケーション、GUIでフォルダ作成後の操作を行う方法について解説します。

tkinterを使ったフォルダ作成ダイアログの実装

tkinterは、Pythonに標準で搭載されているGUIライブラリです。

以下のコードでは、tkinterを使ってフォルダ作成ダイアログを実装します。

import os
import tkinter as tk
from tkinter import simpledialog, messagebox
def create_folder():
    # フォルダ名を入力するダイアログを表示
    folder_name = simpledialog.askstring("フォルダ名", "作成するフォルダ名を入力してください:")
    
    if folder_name:
        # デスクトップのパスを取得
        desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
        folder_path = os.path.join(desktop_path, folder_name)
        
        # フォルダを作成
        try:
            os.makedirs(folder_path, exist_ok=True)
            messagebox.showinfo("成功", f"{folder_name}を作成しました。")
        except Exception as e:
            messagebox.showerror("エラー", f"フォルダの作成に失敗しました: {e}")
# GUIの設定
root = tk.Tk()
root.title("フォルダ作成アプリ")
root.geometry("300x150")
# ボタンを作成
create_button = tk.Button(root, text="フォルダを作成", command=create_folder)
create_button.pack(pady=20)
# GUIを開始
root.mainloop()

このコードでは、tkinterを使ってフォルダ名を入力するダイアログを表示し、指定された名前のフォルダをデスクトップに作成します。

成功した場合はメッセージボックスで通知します。

PyQtを使ったフォルダ作成のGUIアプリケーション

PyQtは、PythonでQtを使ったGUIアプリケーションを作成するためのライブラリです。

以下のコードでは、PyQtを使ってフォルダ作成のGUIアプリケーションを実装します。

import os
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLineEdit, QMessageBox
class FolderCreator(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle("フォルダ作成アプリ")
        self.setGeometry(100, 100, 300, 150)
        layout = QVBoxLayout()
        self.folder_name_input = QLineEdit(self)
        self.folder_name_input.setPlaceholderText("作成するフォルダ名")
        layout.addWidget(self.folder_name_input)
        create_button = QPushButton("フォルダを作成", self)
        create_button.clicked.connect(self.create_folder)
        layout.addWidget(create_button)
        self.setLayout(layout)
    def create_folder(self):
        folder_name = self.folder_name_input.text()
        if folder_name:
            desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
            folder_path = os.path.join(desktop_path, folder_name)
            try:
                os.makedirs(folder_path, exist_ok=True)
                QMessageBox.information(self, "成功", f"{folder_name}を作成しました。")
            except Exception as e:
                QMessageBox.critical(self, "エラー", f"フォルダの作成に失敗しました: {e}")
if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = FolderCreator()
    ex.show()
    sys.exit(app.exec_())

このコードでは、PyQtを使ってフォルダ名を入力するテキストボックスとボタンを持つウィンドウを作成し、指定された名前のフォルダをデスクトップに作成します。

成功した場合はメッセージボックスで通知します。

GUIでフォルダ作成後の操作を行う方法

フォルダを作成した後に、さらにファイル操作を行うことも可能です。

以下のコードでは、tkinterを使ってフォルダ作成後にファイルを作成する機能を追加します。

import os
import tkinter as tk
from tkinter import simpledialog, messagebox
def create_folder_and_file():
    folder_name = simpledialog.askstring("フォルダ名", "作成するフォルダ名を入力してください:")
    
    if folder_name:
        desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
        folder_path = os.path.join(desktop_path, folder_name)
        
        try:
            os.makedirs(folder_path, exist_ok=True)
            messagebox.showinfo("成功", f"{folder_name}を作成しました。")
            
            # フォルダ内にファイルを作成
            file_path = os.path.join(folder_path, "sample.txt")
            with open(file_path, 'w', encoding='utf-8') as file:
                file.write("これはサンプルファイルです。")
            messagebox.showinfo("成功", f"{file_path}を作成しました。")
        except Exception as e:
            messagebox.showerror("エラー", f"操作に失敗しました: {e}")
# GUIの設定
root = tk.Tk()
root.title("フォルダ作成アプリ")
root.geometry("300x150")
# ボタンを作成
create_button = tk.Button(root, text="フォルダとファイルを作成", command=create_folder_and_file)
create_button.pack(pady=20)
# GUIを開始
root.mainloop()

このコードでは、フォルダを作成した後に、そのフォルダ内にサンプルファイルを作成します。

これにより、ユーザーはフォルダ作成後にすぐにファイル操作を行うことができます。

よくある質問

フォルダが既に存在する場合はどうすればいいですか?

フォルダが既に存在する場合、フォルダ作成時にエラーが発生しますが、これを回避するためには、以下の方法があります。

  1. exist_okオプションを使用する: os.makedirs()pathlib.Path.mkdir()exist_ok=Trueオプションを指定することで、既存のフォルダがあってもエラーを発生させずに処理を続行できます。
   os.makedirs(folder_path, exist_ok=True)
  1. 事前に存在を確認する: os.path.exists()を使ってフォルダの存在を確認し、存在しない場合のみ作成する方法もあります。
   if not os.path.exists(folder_path):
       os.makedirs(folder_path)

フォルダ作成時にエラーが発生する原因は何ですか?

フォルダ作成時にエラーが発生する主な原因は以下の通りです。

  • パーミッションエラー: 指定したパスに対する書き込み権限がない場合、フォルダを作成できません。

この場合、適切な権限を持つユーザーで実行するか、パスを変更する必要があります。

  • 無効なパス: フォルダ名やパスに無効な文字が含まれている場合、エラーが発生します。

特に、OSによって予約されている文字やパスの長さ制限に注意が必要です。

  • 親フォルダが存在しない: os.makedirs()を使用しない場合、親フォルダが存在しないとフォルダを作成できません。

親フォルダも一緒に作成する必要があります。

デスクトップ以外の場所にフォルダを作成するにはどうすればいいですか?

デスクトップ以外の場所にフォルダを作成するには、作成したいパスを指定するだけです。

以下の手順で実行できます。

  1. 任意のパスを指定する: フォルダを作成したい場所のフルパスを指定します。

例えば、ドキュメントフォルダに作成する場合は次のようにします。

   folder_path = os.path.join(os.path.expanduser("~"), "Documents", "新しいフォルダ")
  1. os.makedirs()pathlib.Path.mkdir()を使用する: 指定したパスに対してフォルダを作成します。
   os.makedirs(folder_path, exist_ok=True)

このように、任意のパスを指定することで、デスクトップ以外の場所にもフォルダを作成することができます。

まとめ

この記事では、Pythonを使用してデスクトップにフォルダを作成する方法や、さまざまな応用例について詳しく解説しました。

特に、osモジュールやpathlibモジュールを活用したフォルダ作成の基本から、GUIを使ったフォルダ作成の実装方法まで幅広く取り上げています。

これを機に、実際にPythonを使ってフォルダを作成し、ファイル操作を行ってみることで、より効率的な作業環境を整えてみてはいかがでしょうか。

  • URLをコピーしました!
目次から探す