首页 > 解决方案 > 重命名文件夹中的所有文件也在重命名子文件夹

问题描述

当尝试重命名特定文件夹中的文件时,程序代码也会重命名所有子文件夹。有没有办法解决它?

        dname = input("\nenter the path\t")
        if os.path.isdir(dname):
            dst = input("\nenter new file name: \t")
            n = 1
            for i in os.listdir(dname):
                if not os.path.isdir(i):
                    mystr = ".txt"
                    src = os.path.join(dname, i)
                    dd = dst + str(n) + mystr
                    dd = os.path.join(dname, dd)
                    os.rename(src, dd)
                    n += 1

标签: python-3.x

解决方案


您的“isdirectory”(os.path.isdir(i))检查似乎不起作用。

您可以使用以下代码预编译目录中存在的文件列表,

files = (file for file in os.listdir (dname)
           if os.path.isfile ( os.path.join ( dname, file) ))

然后直接遍历文件,比如,

  for i in files:
    mystr = ".txt"
    src = os.path.join(dname, i)
    dd = dst + str(n) + mystr
    dd = os.path.join(dname, dd)
    os.rename(src, dd)
    n += 1

您还可以查看此答案,其中列出了列出给定目录中文件的所有方式。

链接:https ://stackoverflow.com/a/14176179/10164003

谢谢


推荐阅读