我希望每个人都保持安全无虞。
您能帮我更改某些目录中的文件名吗?
我正在为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')
但是无论下载的文件名是什么,我都想更改文件名。
请帮助,非常感谢!
答案 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()删除与旧名称的最右边路径段相对应的目录。