2015-12-07 59 views
-2

我有这个代码重命名一些文件,但当它的情况下,有多个文件具有相同的名称;在“其他”部分甚至没有返回的Hello World蟒蛇,字典和if语句

TArchivo是文件的进一步扩展:像“ JPG”和NÚMERO是,它会从名称 例如串的数量:

Onthedirectory: 'name.txt'

DEF除去(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

'print hello world'或'print'hello world''?你得到的错误是什么?什么是“TArchivo”或“Numero”? –

+0

我想象一下,TArchivo是一个4字符长的后缀,比如'.txt'。 – rudolfovic

+1

fn [Numero:-4:]'不会为你做到这一点。试试: '>>>“somefilenamelongerthanten.txt”[10:-4:]' 你会得到:''melongerthanten'' 如果你很幸运并且名字大于14个字符,它将从#10开始。您可能处于无法获得的情况下,例如''thirteen.txt'[10:-4:]' – rudolfovic

回答

0

这是一个非常反向的stackoverflow风格的问题。这就是为什么每个人都会这样做的原因。传统是你必须学习主题的核心(做你的家庭作业才能说),并提出一些建设性的问题,而不是像“我有问题 - 为我做”这样的问题。

可能这个问题将被关闭。不过我会建议你两件事。 首先 - 从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个第一个字符。

1

看看我的评论在您的文章下方:您的错误可能是由于您的子字符串逻辑的问题。你必须准确地说出你想要做什么来让任何人看到你出错的地方。