重命名文件夹中的文件名 - Python

时间:2015-12-30 18:48:36

标签: python

我在文件夹中有文件。他们的名字看起来像:

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

4 个答案:

答案 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

在运行此脚本之前,您可以看到file_namesdirectoryenter image description here

运行此脚本后。我希望这是有帮助的 enter image description here