如何使用python重命名多个文件



我有很多编程经验,但这是我的第一个python脚本。我试图将前缀"00"添加到特定文件夹中的所有文件。首先,我读取所有文件的名称并将它们保存在一个数组中。然后我对数组进行排序并添加前缀"00",然后使用操作系统。重命名函数,但在某个地方我搞砸了。

import sys, os
file_list = []
for file in os.listdir(sys.argv[1]):
    file_list.append(file)
 for i in file_list:
    file_list[i] = prevName
    newName = '00' + file_list[i]
    os.rename(prevName, newName)

我在文件夹中有一个.py文件,其中包含我想要重命名的所有文件。.py文件包含上面的脚本。当我双击.py文件时,cmd窗口闪烁并消失,没有任何文件名被更改。任何帮助将不胜感激,抱歉,如果这是一个非常明显的错误,我的python水平是相当n00b的时刻。

除了@Padraic的答案,还对您的代码进行以下更改:

import sys, os
file_list = []
for f in os.listdir(sys.argv[1]):
    file_list.append(f)
for i in range(len(file_list)):
    prevName = file_list[i]
    if prevName != 'stackoverflow.py':  # Mention .py file so that it doesnt get renamed
        newName = '00' + file_list[i]
        os.rename(prevName, newName)
  1. 检查缩进第二个for循环没有正确缩进。
  2. for i in file_list: file_list[i] = prevName

    你没有正确迭代。Python中的for循环就像你可能从其他编程语言中知道的foreach循环。for i in file_list中的i实际上给了你列表的元素,所以你应该这样做for i in range(len(file_list)): file_list[i] = ......

你的代码错误,因为你没有提供任何参数,所以sys.argv[1]会给出一个IndexError,你需要从cmd提示符中调用dir名称的脚本,而不是双击它:

python your_script directory <- argv[1]

或者更改代码并指定路径,您还需要将路径连接到文件名。

path = "full_path"
for f in os.listdir(path):
    curr,new = os.path.join(path,f), os.path.join(path,"00{}".format(f))
    os.rename(curr,new)

os.listdir返回一个列表,所以只需要迭代它,你不需要创建一个列表并添加到它。

for i in file_list:也会使每个i成为文件名而不是索引,这样会导致另一个错误,但如上所述,您不需要这样做。

相关内容

  • 没有找到相关文章

最新更新