2017-09-12 8 views
1

私はフォルダ内を歩き回って、いくつかのファイルを削除したいと思っています。しかし最後の行はそれを削除しないので、余分なバックスラッシュがremfileのアドレスに追加されます。フォルダ内のいくつかのファイルを削除する - Python

C:/tmpをルートとして定義するには、どのようにコードを書き直すことができますか?

import os 
root='C:/mmp' 
for root,dirs,files in os.walk(root): 
    for dirname in dirs: 
     for filename in files: 
      if filename=='keepfile': continue 
      remfile=os.path.join(root,dirname,filename) 
      os.remove(remfile) 
+0

'filename'と' dirname' **は同じディレクトリにあります**、 'files'のファイル名は' os.path.join(root、filename) 'にアクセスする必要があります。 –

答えて

0

あなたはroot=r'C:\Test'またはダブルバックスラッシュroot='C:\\Test'のような生の文字列とバックスラッシュを使用する必要があります。私が得た私のフォルダ階層の場合

import os 
root=r'C:\Test' 
for root, dirs,files in os.walk(root): 
    for filename in files: 
     if filename=='keepfile': continue 
     remfile=os.path.join(root,filename) 
     print('Removing ' + remfile) 
     os.remove(remfile) 

Removing C:\Test\root_remove1.txt 
Removing C:\Test\root_remove2.txt 
Removing C:\Test\Folder 1\Folder1_remove1.txt 
Removing C:\Test\Folder 1\Folder1_remove2.txt 
Removing C:\Test\Folder 2\Folder2_remove1.txt 
Removing C:\Test\Folder 2\Folder2_remove2.txt 

は、ループ内で何が起こっているかを確認するために、あなたのコード内のprintステートメントを追加してみてください

さて、これを試してみてください。時には本当に役に立ちます。

関連する問題