質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1352閲覧

ファイル名からフォルダーを作る方法(Python)

Danrussia

総合スコア44

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/02/02 08:07

前提・実現したいこと

Pythonを使用しディレクトリ内(フォルダー)から複数のファイル名を習得した後に、それらのファイル名からディレクトリ(フォルダー)を一括に作成したいです。

発生している問題・エラーメッセージ

os.mkdir()を使用しフォルダー作成を試みましたができませんでした。

エラーメッセージ --------------------------------------------------------------------------- FileNotFoundError Traceback (most recent call last) <ipython-input-31-9b37c5cca637> in <module>() ----> 1 os.mkdir(files2) FileNotFoundError: [WinError 3] 指定されたパスが見つかりません。: "['img001c', 'img002c', 'img003c.jpg', 'img004c.jpg', 'img005c.jpg', 'img006c.jpg', 'img009c.jpg', 'img010cc.jpg', 'img012c.jpg', 'img013c.jpg', 'img014c.jpg', 'img015c.jpg', 'img016c.jpg', 'img017c.jpg', 'img018c.jpg', 'img019c.jpg', 'img020c.jpg', 'img021c.jpg', 'img022c.jpg', 'img023c.jpg', 'img024c.jpg', 'img025c.jpg', 'img026c.jpg', 'img027c.jpg', 'img028c.jpg', 'img029c.jpg', 'img030c.jpg', 'img031c.jpg', 'img032c.jpg', 'img033c.jpg', 'img034c.jpg', 'img035c.jpg', 'img036c.jpg', 'img037c.jpg', 'img038c.jpg', 'img039c.jpg', 'img040c.jpg', 'img041c.jpg', 'img042c.jpg', 'img043c.jpg', 'img044c.jpg', 'img045c.jpg', 'img046c.jpg', 'img047c.jpg', 'img048c.jpg', 'img049c.jpg', 'img050c.jpg', 'img051.jpg', 'img051c.jpg', 'img052c.jpg', 'img053c.jpg', 'img054c.jpg', 'img055c.jpg', 'img056c. ### #ソースコード import os os.chdir("C:\Users\For Programming\Desktop\補正済み") files = os.listdir() files2=str(files) os.mkdir(files2) ```Python3 ### 試したこと os.listdir() とos.mkdir()を用いWhileとfor構文を用い目的を達成しようと試みました。 ### 補足情報(FW/ツールのバージョンなど) Python3.7.0 Jupyter NoteBook

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2019/02/02 08:47

そもそも同じ名前のフォルダとファイルは同じ場所に作成できません。
Danrussia

2019/02/02 08:54 編集

"補正済み"のフォルダーの中に img003c.jpg というファイルがあったらimg003cというフォルダーを”補正済み”のフォルダーに作りたいという意味です。
guest

回答1

0

ベストアンサー

すでに存在するファイル/フォルダと同名のフォルダは作成できません
で、

"補正済み"のフォルダーの中に img003c.jpg というファイルがあったらimg003cというフォルダーを”補正済み”のフォルダーに作りたいという意味です。

拡張子のないファイルがある場合はどうしましょうか

手順としては、
・ファイルリストを取得
・リストの中からフォルダ名は削除
・リストの中から拡張子のないファイル名は削除(?)
・リストの内容から拡張子を削除
・フォルダの作成
となりますね

投稿2019/02/02 09:06

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Danrussia

2019/02/02 09:15

途中試行錯誤で作っていたフォルダーがあり、ニュアンスが変わってしまいました。すいません... ----------------- import os os.chdir("C:\Users\For Programming\Desktop\補正済み") files = os.listdir() print(files) ['A.jpg', 'B.jpg','C.jpg', 'D.jpg',] files2=str(files) os.mkdir(files2) -------------------------------- この際の”補正済み”のフォルダーに入っていた'<A.jpg', 'B.jpg','C.jpg', 'D.jpg>というファイル名と同じ名前のフォルダーを”補正済み”のフォルダーに作成したいという事です。
y_waiwai

2019/02/02 09:25 編集

”A”という名前のフォルダを作るなら、”A.jpg” から拡張子を削除する必要があります その方法はわかるでしょうか もしかして、"A.jpg"という名前のフォルダを作りたいということでしょうか。それは無理なので諦めましょう
Danrussia

2019/02/02 09:47

os.path.splitext()を使ってみましたが、うまくいきませんでした。 可能であれば教えていただけるとありがたいです。
y_waiwai

2019/02/02 09:54

files はファイル名のリストが出てきてますんで、 for s in files: で一個づつばらして、 name,ext=os.path.splittext(s) でファイル名と拡張子を分けて、 os.makedir(name) でフォルダを作る、という手順となります ましかし、回答に書いてる通り、ディレクトリと拡張子のないファイルがある場合はエラーになるので、それをどーするかというはなしになりますね
Danrussia

2019/02/02 10:13

ご指導いただいたコードで動かしてみましたが上手くいきませんでした... --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-79-cae1bc2057d4> in <module>() 1 for s in files: ----> 2 name,ext=os.path.splittext(s) 3 os.makedir(name) AttributeError: module 'ntpath' has no attribute 'splittext'
y_waiwai

2019/02/02 11:14

ああ、そらで書いたのでスペル間違ってますねw 修正しといてください
Danrussia

2019/02/02 11:53 編集

すいません...動きませんでした AttributeError Traceback (most recent call last) <ipython-input-106-e50c5d3e9949> in <module>() 1 for s in files: 2 name,ext=os.path.splitext(s) ----> 3 os.makedir(name) 4 5 AttributeError: module 'os' has no attribute 'makedir'
y_waiwai

2019/02/02 11:53

それもスペル違うw mkdir ね
Danrussia

2019/02/02 11:59

期待通りに動いてくれました!!! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問