python,字典和if语句

时间:2015-12-07 23:49:09

标签: python

我有这个代码用于重命名某些文件,但是当它有多个文件具有相同名称的情况时; '其他'部分甚至不回归你好世界

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变量做的是当目录中有一个同名文件时,它会在新名称中添加一个数字,然后将其重命名为

2 个答案:

答案 0 :(得分:1)

看一下你帖子下方的评论:你的错误可能是由你的子串逻辑问题引起的。你必须确切地说出你想要做什么才能让任何人看到你出错的地方。

答案 1 :(得分:0)

这是一个非常反堆栈流式的问题。这就是为什么每个人都这样做的反应。传统是你必须学习这个主题的核心(做你的家庭作业)并提出一些建设性的问题,而不是像“我有问题 - 为我这样做”这样的问题。

可能问题将会结束。 不过我建议你做两件事。 首先 - 从Coursera获取一个关于Python的优秀在线课程。一些链接:01对,23

你的程序做了一个简单的程序 - 但是很难阅读和理解。 一些简单的修正会使它更好,更清晰,更容易理解。

例如:

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个第一个角色。