bugfix> python > 投稿

あいさつがありますので、ルートフォルダーで機能するコードがあります。

import os, sys
path = 'root folder'
for filename in os.lestdir(os.path.dirname(path)):
    base_file, ext = os.path.splitext(filename)
    if ext == ".prn":
        os.rename(filename,base_file + "htm")

次に、os.walkを使用してサブフォルダを反復処理しようとしますが、ルートフォルダまたはサブフォルダの両方で機能しなくなります:

import os, sys
path = 'root folder'
for roots, dirs, files in os.walk(path):
    for filename in os.lestdir(os.path.dirname(path)):
        base_file, ext = os.path.splitext(filename)
        if ext == ".prn":
            os.rename(filename,base_file + "htm")

回答 1 件
  • ファイル名の便利なリストがすでにあるので、再度作成する必要はありません。私がやる方法は次のとおりです。

    import os
    path = 'root folder'
    for subdir, dirs, files in os.walk(path):
        for filename in files:
            base_file, ext = os.path.splitext(filename)
            if ext == ".prn":
                new_name = base_file + '.htm'
                os.rename(os.path.join(subdir, filename),
                          os.path.join(subdir, new_name))
    
    

あなたの答え