1

このようなディレクトリの長いリストがあります

C:\Users\vanstrie\Desktop\ntnu\SCHEMA\2012\07_paper\results\026\onsets

フォルダー 001-040 (上記の 026) を解析し、その中にあるすべてのファイルとサブフォルダーを含む onsets サブディレクトリを削除します。Python 3でこれを達成する方法がわかりません。解決策がある場合は、アドバイスしてください。よろしくお願いします。

ニールス

4

2 に答える 2

2

このようなものが機能するはずだと思います...

import glob
import os.path
import shutil
files_dirs = glob.glob(r'C:\Users\vanstrie\Desktop\ntnu\SCHEMA\2012\07_paper\results\*')
for d in files_dirs:
    head,tail = os.path.split(d)
    try:
        if (0 < int(tail) < 41) and (len(tail) == 3):  #don't want to delete `\results\3\onsets` I guess...
           print("about to delete:",d)
           shutil.rmtree(os.path.join(d,'onsets'),ignore_errors=True)
    except ValueError:  #apparently we got a non-integer.  Leave that directory.
        pass

ファイルを削除するときと同様に、最初のパスで削除されるものを確実に出力します-スクリプトが実際に期待どおりに機能していることを確認するため(および保持したいものを削除しないようにするため) .

于 2012-11-28T15:03:59.227 に答える
1
import shutil, os.path

root_folder = "C:\\Users\\vanstrie\\Desktop\\ntnu\\SCHEMA\\2012\\07_paper\\results"
suffix = "onsets"

for i in range(1,41):
  folder = os.path.join( root_folder, "%03d" % i, suffix )
  shutil.rmtree( folder, ignore_errors=True, onerror=None )
于 2012-11-28T15:05:32.563 に答える