我在文件夹中有文件。他们的名字看起来像:
hello_1
music
hello_2
music_2015
我想按顺序重命名它们:
1
2
3
4
我的python脚本是:
import glob, os
n = 1
for filename in glob.glob('data\*'):
os.rename(filename, str(n))
n += 1
我收到以下错误:
[Error 183] Cannot create a file when that file already exists
答案 0 :(得分:3)
试试这个版本:
import os
data = os.path.abspath("data/")
for i, f in enumerate(os.listdir(data)):
src = os.path.join(data, f)
dst = os.path.join(data, (str(i + 1)))
os.rename(src, dst)
它使用标准化的绝对路径。这个对我有用。它更简洁,只需要os
库而不是两个。
答案 1 :(得分:2)
该脚本重命名该文件并将其位置更改为父文件夹,在本例中为数据文件夹的父文件夹。也许你在父文件夹中有一些带有这些号码的文件。您应该将文件夹名称附加到重命名功能的第二个参数。
答案 2 :(得分:2)
os.rename(src,dst)
将文件或目录src重命名为dst。如果dst是目录,则会引发OSError。在Unix上,如果dst存在且是一个文件,如果用户有权限,它将被静默替换。如果src和dst在不同的文件系统上,则某些Unix风格的操作可能会失败。如果成功,重命名将是原子操作(这是POSIX要求)。在Windows上,如果dst已经存在,即使它是文件,也会引发OSError;当dst命名现有文件时,可能无法实现原子重命名。
你的目的地是错的。它是您当前的目录+ n
,而它应该是data
目录+ n
。
答案 3 :(得分:0)
您可以尝试使用此脚本rename_files.py
。您应该将此脚本放在所有files
所在的文件夹中。
另请注意:
os.rename(src,dst)
将文件或目录src重命名为dst。如果dst是目录, 将引发OSError。在Unix上,如果dst存在且是一个文件,它会 如果用户有权限,则以静默方式替换。操作可能 如果src和dst在不同的文件系统上,则在某些Unix风格上失败。 如果成功,重命名将是一个原子操作(这是一个 POSIX要求)。在Windows上,如果dst已存在,则OSError将为 即使它是一个文件也被提出;当dst命名现有文件时,可能无法实现原子重命名。
import os
list_of_files = os.listdir(os.getcwd())
n = 1
for filename in list_of_files:
if not filename.endswith(".py"):
os.rename(filename, str(n))
n += 1