我有这个代码用于重命名某些文件,但是当它有多个文件具有相同名称的情况时; '其他'部分甚至不回归你好世界
TArchivo是该档案的延伸:喜欢',jpg'和Numero是从名称中获取的字符串数 例如:
Onthedirectory:' name.txt'
def remove(3,' .txt')
onthedirectory:' e.txt'
import os
def remove(Numero,TArchivo):
n = 0
for fn in os.listdir("."):
if fn[-4:] == TArchivo:
if len(fn) > Numero:
nombre = fn[Numero:-4:]
nn = ''
nn = nombre + TArchivo
if nn not in os.listdir('.'):
os.rename(fn,nn)
else:
print 'hello world'
n = n + 1
nombre = fn[Numero:-4] + str(n)
nn = nombre + TArchivo
os.rename(fn,nn)
return
我收到此错误: WindowsError:[错误183]无法创建已存在的文件'
我试图用n变量做的是当目录中有一个同名文件时,它会在新名称中添加一个数字,然后将其重命名为
答案 0 :(得分:1)
看一下你帖子下方的评论:你的错误可能是由你的子串逻辑问题引起的。你必须确切地说出你想要做什么才能让任何人看到你出错的地方。
答案 1 :(得分:0)
这是一个非常反堆栈流式的问题。这就是为什么每个人都这样做的反应。传统是你必须学习这个主题的核心(做你的家庭作业)并提出一些建设性的问题,而不是像“我有问题 - 为我这样做”这样的问题。
可能问题将会结束。 不过我建议你做两件事。 首先 - 从Coursera获取一个关于Python的优秀在线课程。一些链接:0和1对,2,3。
你的程序做了一个简单的程序 - 但是很难阅读和理解。 一些简单的修正会使它更好,更清晰,更容易理解。
例如:
if fn[-4:] == TArchivo:
if len(fn) > Numero:
应该是
if fn[-4:] == TArchivo and len(fn) > Numero:
nombre = fn[Numero:-4:]
不需要第二个冒号,它与nombre = fn[Numero:-4]
相同,根本不需要nn = ''
- 在Python中你不需要预先声明东西,你可以写:
nn = fn[Numero:-4] + TArchivo
和str((str(n)))
- ?!!它只是str(n)
。
其次,rudolfovic注意到的问题是非常正确的。您应该测试if len(fn) > Numero + 4
以考虑扩展名。
而且,使用您应用的方法仍然可能发生冲突。考虑使用文件aaabcd.txt,aaabcd.txt,aaabcd1.txt。你切掉了3个第一个角色。