重命名文件夹中的所有文件也重命名子文件夹

时间:2019-06-21 06:46:56

标签: python-3.x

当尝试重命名特定文件夹中的文件时,程序代码将重命名 所有子文件夹也是如此。有办法解决吗?

        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

2 个答案:

答案 0 :(得分:1)

看来这行不适合您。

  

os.path.isdir(i)

在检查之前尝试创建完整路径:

  

os.path.isdir(os.path.join(dname,i)):

答案 1 :(得分:0)

您的“ 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

谢谢