【发布时间】: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