【问题标题】:How to rename a file in certain directory? [duplicate]如何重命名某个目录中的文件? [复制]
【发布时间】:2020-04-04 02:53:32
【问题描述】:

我希望每个人都平安无事。

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

我正在为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')

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

请帮忙,非常感谢!!

【问题讨论】:

  • 您可以使用os.listdiros.walk 获取给定文件夹中的文件名。正如您提到的,您不知道原始下载的文件名。

标签: python


【解决方案1】:

我认为你的想法很正确。

首先,您将在下载任何内容之前列出文件夹中的所有文件名,将该列表存储在变量中,例如current_files。然后您开始从网上下载文件,之后,您再次列出所有文件名并存储在第二个列表中。现在您将比较 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

【讨论】:

  • 非常感谢先生!!!这正是我的想法!
【解决方案2】:

你的问题并不完全清楚。

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

【讨论】:

    【解决方案3】:

    使用 os.renames(old, new)。

    os.renames) 递归目录或文件重命名功能。像 rename() 一样工作,除了首先尝试创建使新路径名正确所需的任何中间目录。重命名后,旧名称最右边的路径段对应的目录将被removedirs()删除。

    参考文献

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-28
      • 2015-04-23
      • 2014-11-29
      • 2011-02-15
      • 1970-01-01
      • 2015-02-28
      • 2023-02-20
      • 2012-12-27
      相关资源
      最近更新 更多