【问题标题】:I am simply trying to write a python script that will change the filename in a directory of files我只是想编写一个 python 脚本来更改文件目录中的文件名
【发布时间】:2017-01-02 16:10:51
【问题描述】:

我正在尝试在 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()

【问题讨论】:

  • ".. 我无法将整数与字符串连接起来"。为此,只需将整数设为字符串。像这样:new_filename = filename + str(999)
  • 当我这样做时出现错误:未定义全局名称'file_name'
  • 关于下面的答案,我得到错误:在赋值之前引用了局部变量'file_name'
  • 所以冷静地看看你在哪里声明你的变量以及你在哪里使用它们。我建议从键盘上休息 30 分钟,以重新思考这个主题:)。

标签: python python-2.7 loops increment


【解决方案1】:

而不是做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 2016-03-14
    • 2011-03-12
    • 2022-12-07
    • 2011-02-05
    相关资源
    最近更新 更多