Python: 重命名目录中的文件

Python: Renaming Files in Directory

我有一个包含数千张从 Kaggle 下载的图像的数据集,我想重命名这些文件。这些图像都是 .png 图像。图片的当前名称都类似于 'Screen Shot 2018-06-08 at 5.08.37 PM.png',我想将它们全部重命名为简单的数字(例如:0.png、1.png、2.png、... , 1234.png).

我正在使用较小的数据集来测试代码,发现 os 模块中有一个 rename() 函数。我目前有:

for count, filename in enumerate(os.listdir(data_dir_path)):
  dst = str(count) + '.png'
  src = str(data_dir_path) + '/' + filename
  dst = str(data_dir_path) + '/' + dst
  os.rename(dst, src)

这很有效,但是在我 运行 脚本之前我有大约 16 张图片,现在在 运行 这个脚本之后,我现在只有前 8 张。

data_dir_path = '/content/drive/MyDrive/Fruits/train/Fresh Apples/'

在函数os.rename()中,参数的顺序是src, dst。但是您以相反的顺序传递参数:dst, src,因此您尝试使用新图像名称并将其重命名为旧图像名称。这是您的代码在传递给 os.rename() 的参数顺序更改后的样子:

for count, filename in enumerate(os.listdir(data_dir_path)):
    dst = str(count) + '.png'
    src = str(data_dir_path) + '/' + filename
    dst = str(data_dir_path) + '/' + dst
    os.rename(src, dst)

如果这不起作用,请尝试 os.rename(src=src, dst=dst)

srcdstos.rename(dst, src) 中的方向错了。

使用 os.path.join() 而不是手动连接分隔符 / 也是一个好主意(让 Python 为您处理,它会跨 *nix/Windows/Mac):

for count, filename in enumerate(os.listdir(data_dir_path)):
    src = os.path.join(data_dir_path, filename)
    dst = os.path.join(data_dir_path, f'{str(count)}.png')
    os.rename(src, dst)