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)
。
你 src
和 dst
在 os.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)
我有一个包含数千张从 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)
。
你 src
和 dst
在 os.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)