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

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

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

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

Q&A

解決済

2回答

372閲覧

python 特定のフォルダの削除

grx72expo

総合スコア15

Python

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

0グッド

1クリップ

投稿2018/02/04 11:35

編集2018/02/04 13:57

フォルダXの中に、
フォルダa1,a2,a3,a4,,,,,a99,a100があり、
それぞれのフォルダの中にs,t,u,vというフォルダがあるとします。

a1~a100までのフォルダ内のsまたはtをフォルダ名に含むフォルダを一括削除するには、どのようなコードを書けばよいのでしょうか?

aが頭につくフォルダ全ての中身を正規表現で一括操作したいと思っています。

python

1folder = 'X' 2for inputfilename in os.listdir(folder) : 3 for input in os.listdir(folder + '/' + inputfilename) :

この続きがさっぱりわかりません。

質問の仕方があまりよくなかったので修正しました。

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

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

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

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

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

guest

回答2

0

itertools.productを使ってみたかったんです!!!

Python

1# -*- coding: utf8 -*- 2import itertools 3from pathlib import Path 4import shutil 5folder = 'X' 6 7 8def main(): 9 target_dir = [Path(*p) for p in itertools.product(folder, 'abcd', 'st')] 10 for subdir in target_dir: 11 print(subdir) 12 shutil.rmtree(str(subdir)) 13 14 15def test_create_dir(): 16 for p in itertools.product(folder, 'abcd', 'stuv'): 17 subdir = Path(*p) 18 subdir.mkdir(parents=True, exist_ok=True) 19 #print(subdir) 20 21 22if __name__ == '__main__': 23 #test_create_dir() 24 main()

2018/02/05追記
ご要望の正規表現ではありませんが、改訂された質問内容に対応する削除処理を記載しておきます。

Python

1# -*- coding: utf8 -*- 2from itertools import starmap, product, repeat 3from pathlib import Path 4import shutil 5folder = 'X' 6 7 8def sub_dir() -> map: 9 return map(''.join, zip(repeat('a'), map(str, range(101)))) 10 11 12def main() -> None: 13 for p in starmap(Path, product(folder, sub_dir(), 'st')): 14 print(p) 15 #shutil.rmtree(str(p)) 16 17 18def test_create_dir() -> None: 19 for p in starmap(Path, product(folder, sub_dir(), 'stuv')): 20 p.mkdir(parents=True, exist_ok=True) 21 22 23if __name__ == '__main__': 24 # テストのためのディレクトリ作成! 25 #test_create_dir() 26 main() 27

投稿2018/02/04 13:40

編集2018/02/04 16:13
umyu

総合スコア5846

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

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

YouheiSakurai

2018/02/04 14:26

賛同します。starmap(Path, product(...))やmap(Path, *product(...))でもカッコいいですね。
umyu

2018/02/04 16:14

starmap初めて知りました。。回答文に反映させていただきました。参考になりました。ありがとうございます。
guest

0

ベストアンサー

難しく考えずにrmtreeを繰り返したらいいんです。

python

1from shutil import rmtree 2 3 4rmtree('X/a/s') 5rmtree('X/a/t') 6rmtree('X/b/s') 7rmtree('X/b/t') 8rmtree('X/c/s') 9rmtree('X/c/t') 10rmtree('X/d/s') 11rmtree('X/d/t')

これが冗長だと感じたらそこからちょっと難しく考え出せば良いのです。

追記:質問変更にに対応

正規表現を使うと難しくなるのでglobをお勧めします。

python

1from glob import glob 2 3for target in glob('X/a*/s') + glob('X/a*/t'): 4 print(target)

投稿2018/02/04 13:22

編集2018/02/04 14:38
YouheiSakurai

総合スコア6142

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

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

grx72expo

2018/02/05 10:50

回答ありがとうございます。 print(target)を shutil.rmtree(target)にして、目的の処理を実行できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問