我只是想编写一个python脚本,它将改变文件目录中的文件名

时间:2016-08-26 05:07:09

标签: python python-2.7 loops increment

我正在尝试在python 2.7中创建一个脚本,它将重命名目录中的所有文件。下面是我到目前为止的代码。第一个函数删除文件名中的任何数字。第二个函数应该重命名新文件名。第二个函数运行时出现以下错误:

  

[错误183]当该文件已存在时无法创建文件

我知道这是因为我没有遍历文件并在新文件名中添加递增编号,因此脚本更改了第一个文件的名称,然后尝试将第二个文件的名称更改为相同将name命名为第一个,产生错误。

有人可以帮我创建一个循环,为目录中的每个文件名添加一个递增的数字吗?

我尝试添加:

if file_name == filename:
file_name = file_name + 1
在while循环中

,但这显然不起作用,因为我不能用字符串连接一个整数。

import os
def replace_num():
    file_list = os.listdir(r"C:\Users\Admin\Desktop\Python Pics")
    print(file_list)
    saved_path = os.getcwd()
    print("Current Working Directory is " + saved_path)
    os.chdir(r"C:\Users\Admin\Desktop\Python Pics")
    for file_name in file_list:
        print("Old Name - " + file_name)
        os.rename(file_name, file_name.translate(None, "0123456789"))
    os.chdir(saved_path)
replace_num()

def rename_files():
    file_list = os.listdir(r"C:\Users\Admin\Desktop\Python Pics")
    print(file_list)
    saved_path = os.getcwd()
    print("Current Working Directory is " + saved_path)
    os.chdir(r"C:\Users\Admin\Desktop\Python Pics")
    for new_name in file_list:
        print("New Name - " + new_name)
        try:
            os.rename(new_name, "iPhone")
        except Exception, e:
            print e
rename_files()

1 个答案:

答案 0 :(得分:4)

而不是:

if file_name == filename:
    file_name = file_name + 1

做这样的事情:

counter = 0
for file_name in file_container:
    if file_name == file_name: # this will always be True - so it's unnecessary
        file_name = "{0}_{1}".format(file_name, counter)
        counter += 1