如何重命名特定目录中的文件?

时间:2020-04-04 02:53:32

标签: python

我希望每个人都保持安全无虞。

您能帮我更改某些目录中的文件名吗?

我正在为RDA编写脚本以从该网站下载文档,并且当我从该网站下载这些文件时,文件名没有模式,这是完全随机的。所以我想将这些文件重命名为特定的模式。

例如,

第一次下载的文件名:filedownload.pdf 重命名为:1234567.pdf

第二次下载的文件名:extractpages.pdf 重命名为:1234568.pdf

在参数中设置了新名称,这样部分就可以了,但是由于我不知道下载的文件名是什么,因此无法将此文件名更改为新名称。

所以我要记住的是,对于每个下载的文件,将其放在没有任何文件的该文件夹中,并且只要该文件夹中有任何文件,它就会重命名该文件并将其放在其他文件夹中。

下面是我写的代码;

filepath = "originalFilePath/downloadedfile.pdf"

if os.path.isfile(filepath):
    os.rename(r'originalFilePath/downloadedfile.pdf',
              'newFilePath' + str(parameter['search_number']) + '.pdf')

但是无论下载的文件名是什么,我都想更改文件名。

请帮助,非常感谢!

3 个答案:

答案 0 :(得分:1)

我认为您的想法很正确。

首先,您将在下载任何内容之前列出文件夹中的所有文件名,并将该列表存储在变量中,例如current_files。然后,您开始从Web下载文件,之后,再次列出所有文件名并存储在第二个列表中。现在,您将比较2个列表,知道什么是新文件(刚刚下载)。然后,您只需在这些新文件上循环并以所需的模式将其重命名。我将在一分钟内添加代码

import glob
current_files = glob.glob("/path/Downloads/*.pdf")
# ['path/Downloads/abc.pdf', 'path/Downloads/xyz.pdf']

# your code to download files from the web

new_files = set(glob.glob("/path/Downloads/*.pdf")) - set(current_files)
# ['path/Downloads/just_downloaded1.pdf', 'path/Downloads/just_downloaded2.pdf']

for file in new_files:
    #do the rename code here to your new files

答案 1 :(得分:0)

您的问题并不十分清楚。

无论如何,我认为您的代码有问题,您必须在/之后添加newFilePath

答案 2 :(得分:0)

使用os.renames(旧,新)。

操作系统名称) 递归目录或文件重命名功能。像rename()一样工作,除了首先尝试创建使新路径名良好所需的任何中间目录。重命名后,将使用removeirs()删除与旧名称的最右边路径段相对应的目录。

参考文献

https://docs.python.org/3/library/os.html

相关问题