以递归方式将所有.pyc.py文件命名为.py文件

时间:2015-03-21 06:49:07

标签: python python-2.7 recursion

我试图以递归方式将所有.pyc.py个文件重命名为.py个文件。

我的代码

import os,sys


def main():
    ffolder = raw_input("folder >> ")
    folder = 'C:\Users\Account Name\Desktop\Disney\toontown\\'+ ffolder +''
    for filename in os.listdir(folder):
        infilename = os.path.join(folder,filename)
        if not os.path.isfile(infilename): continue
        oldbase = os.path.splitext(filename)
        newname = infilename.replace('.pyc.py', '.py')
        output = os.rename(infilename, newname)


while True:
    main()

它工作正常,但它需要我输入每个文件夹名称。我如何让它自己做呢?

3 个答案:

答案 0 :(得分:2)

使用os.walk以递归方式遍历目录树。

import os
import fnmatch

for dirpath, dirnames, filenames in os.walk(folder):
     for f in filenames:
         if f.endswith('.pyc.py'):
             os.rename(os.path.join(dirpath, f), os.path.join(dirpath, f[:-7] + '.py'))

答案 1 :(得分:0)

我认为os.walk是解决方案。它可以recursivelysubdirectories中查找文件。试试这个:

import os,sys


def main():
    ffolder = raw_input("folder >> ")



    root = 'C:\Users\Account Name\Desktop\Disney\toontown\\'+ ffolder +''
    for folder, subdirs, files in os.walk(root):
        for filename in files:
            infilename = os.path.join(folder,filename)
            if not os.path.isfile(infilename): continue
            oldbase = os.path.splitext(filename)
            newname = infilename.replace('.pyc.py', '.py')
            output = os.rename(infilename, newname)


while True:
    main()

答案 2 :(得分:-1)

查看os.walk [docs] 您需要在目录上调用重命名函数(例如doRename(dir))。让您的函数遍历目录,重命名所有文件,然后使用它找到的任何目录调用自己。