在Python中重命名文件夹

时间:2015-10-06 19:06:56

标签: python

我成功地创建了一个脚本,将所有$更改为目录中的#,但它不会影响foldername。所以foldername仍然保持同名。如何修改它以将$更改为foldername中的#?

def cleanFiles(self):
    directoryChosen = self.directoryChoice()
    print directoryChosen + "     you made it to files selected"

    #for file_names in os.listdir(directoryChosen):
        #self.listWidget.addItem(file_names)

    for n in os.listdir(directoryChosen):
        print n + "   made it here"
        self.listWidget.addItem(n)
        if os.path.isdir(directoryChosen):

            print directoryChosen + "   almost there"
            newname =  n.replace('$', '#')
            print newname + "    this is newname"
            if newname != n:
                print newname
                print n
                path = os.path.join(directoryChosen + '/' + n)
                print path
                target = os.path.join(directoryChosen + '/' + newname)
                print target
                os.rename(path, target)

3 个答案:

答案 0 :(得分:1)

public static int daysInMonth(int month) {
    return Month.of(month).minLength();
}

答案 1 :(得分:1)

你遇到的第一个问题是你这样做:

if os.path.isdir(directoryChosen):

如果你想这样做:

if os.path.isdir(n):

因此,考虑到这一点,在您的循环中,您实际上想要引用n,这是您要检查的文件夹和文件。

您遇到的第二个问题是您使用os.path.join

您不必加入您加入的方式。你不需要在两者之间添加斜杠,连接就是为你做的。我建议阅读那份文件。所以你想要这个:

path = os.path.join(directoryChosen, n)
target = os.path.join(directoryChosen, newname)

因此,代码最终会看起来像这样:

for n in os.listdir(directoryChosen):
    print n + "   made it here"
    self.listWidget.addItem(n)
    if os.path.isdir(n):

        print directoryChosen + "   almost there"
        newname =  n.replace('$', '#')
        print newname + "    this is newname"
        if newname != n:
            print newname
            print n
            path = os.path.join(directoryChosen, n)
            print path
            target = os.path.join(directoryChosen, newname)
            print target
            os.rename(path, target)

答案 2 :(得分:1)

我不确定我是否正确理解你的问题。但是,您可以使用以下代码:

import os

def cleanFiles():
    directoryChosen = "C:\\Test$234"
    if os.path.isdir(directoryChosen):
        for n in os.listdir(directoryChosen):
            newname =  n.replace('$', '#')
            if newname != n:
                path = os.path.join(directoryChosen + '/' + n)
                target = os.path.join(directoryChosen + '/' + newname)
                os.rename(path, target)

    os.rename(directoryChosen, directoryChosen.replace('$','#'))

如果您正在寻找的话,它也会重命名您选择的目录。