我成功地创建了一个脚本,将所有$更改为目录中的#,但它不会影响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)
答案 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('$','#'))
如果您正在寻找的话,它也会重命名您选择的目录。