2017-12-20 20 views
0

私は日付MMDDYYYY(11222013)という名前のディレクトリのリストを持っています。私は最終的に2013年からすべてのディレクトリを削除しようとしています。私の正規表現は6桁[0-9]を探しているはずです。コードを複数の変数に分割しようとしましたが、運がなかったのです。Python - ディレクトリパスの一部としての正規表現 - エスケープ

正規表現を正しくエスケープしていないと思われます。私は、このエラーに実行し続ける:

FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:/U sers/USER/Desktop/test/\d{6}13'

私は私の出力を印刷しようとしたと私はこのパスを取得する:

C:/Users/USER/Desktop/test/\d{6}13

は私のコード:

import os 
import shutil 
import re 
StrDir = 'C:/Users/USER/Desktop/test/' 
Regex = r"\d{6}" + '13' 
print (StrDir + Regex) 
shutil.rmtree (StrDir + Regex) 
+0

あなたは正規表現を書いてから、それを文字列に追加して文字列を作成しました。正規表現をディレクトリ名に適用する設定がどこにもありません。 –

+0

おそらく[os.listdir](https://docs.python.org/3/library/os.html#os.listdir)や[os.walk](https://docs.python.org /3/library/os.html#os.walk)を実行して正規表現 '^ \ d {4} 2013 $'で名前を確認します。 [現在のディレクトリ内のすべてのサブディレクトリの一覧の取得](https://stackoverflow.com/questions/973473/getting-a-list-of-all-subdirectories-in-the-current-directory)を参照してください。 – Galen

答えて

0

このコードは、トリックを行う必要があります:

import os 
import shutil 
import re 

pattern = "^\d{4}2013$" 
searchDir = 'C:/Users/USER/Desktop/test/' 
innerDirs = os.listdir(searchDir) 
for dir in innerDirs: 
    if (re.search(pattern, dir)): 
     shutil.rmtree(searchDir + dir) 

上記のコード'2013'で終わる「日付」フォルダは削除されます。

関連する問題