猿问

如何重命名某个目录中的文件?

我希望每个人都能保持安全和健康。


你能帮我更改某个目录中的文件名吗?


我正在为RDA编写一个脚本,以便从本网站下载文档,当我从本网站下载这些文件时,文件名没有模式,它完全是随机的。所以我想把这些文件重命名为某种模式。


例如


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


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


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


因此,我想到的是对于每个下载的文件,将其放在此文件夹中而没有任何文件,并且每当任何文件位于此文件夹中时,它都会重命名该文件并将其放在不同的文件夹中。


下面是我写的代码;


filepath = "originalFilePath/downloadedfile.pdf"


if os.path.isfile(filepath):

    os.rename(r'originalFilePath/downloadedfile.pdf',

              'newFilePath' + str(parameter['search_number']) + '.pdf')

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


请帮忙,非常感谢!!


白猪掌柜的
浏览 125回答 3
3回答

莫回无

我认为你的想法是完全正确的。首先,在下载任何内容之前,您将列出文件夹中的所有文件名,将该列表存储在变量中,比方说。然后,您开始从Web下载文件,之后,再次列出所有文件名并存储在第二个列表中。现在,您将比较2个列表,并知道哪些文件是新的(刚刚下载)。然后,您只需循环访问这些新文件,然后以所需的模式对其进行重命名即可。我会在一分钟内添加代码current_filesimport globcurrent_files = glob.glob("/path/Downloads/*.pdf")# ['path/Downloads/abc.pdf', 'path/Downloads/xyz.pdf']# your code to download files from the webnew_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

达令说

你的问题并不完全清楚。无论如何,我认为您的代码有问题,您必须在 之后添加。/newFilePath

皈依舞

使用 os.重命名(旧、新)。os.renames(旧的,新的)递归目录或文件重命名功能。工作原理类似于 rename(),除了首先尝试创建使新路径名良好所需的任何中间目录。重命名后,将使用 removedirs() 修剪掉与旧名称最右边的路径段相对应的目录。引用https://docs.python.org/3/library/os.html
随时随地看视频慕课网APP

相关分类

Python
我要回答