【发布时间】:2019-06-28 00:14:21
【问题描述】:
我在 python 中结合 selenium 编写了一个脚本,通过单击该文件的链接从网页下载文件。当我运行我的脚本时,该文件似乎已下载到预定义的文件夹中。
问题是我找不到重命名下载文件的任何想法。 FYC 该文件夹中可能有多个文件。我想将下载的文件重命名为脚本中的变量newname。
如何重命名文件夹中下载的文件?
这是我到目前为止写的:
import os
from selenium import webdriver
url = "https://www.online-convert.com/file-format/docx"
folder_location = r"C:\Users\WCS\Desktop\file_storage"
newname = "document.docx"
def download_n_rename_file(link):
driver.get(link)
driver.find_element_by_css_selector("a[href$='example_multipage.docx']").click()
#how to rename the downloaded file to "document.docx"
#os.rename()
if __name__ == '__main__':
chromeOptions = webdriver.ChromeOptions()
prefs = {'download.default_directory': folder_location}
chromeOptions.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=chromeOptions)
download_n_rename_file(url)
【问题讨论】:
-
os.rename('existing_name.txt',newname) -
感谢您的建议@user5173426。我实际上知道如何使用
os.rename(),但问题是事先没有这样的现有名称。一旦文件在文件夹中可用,我需要重命名该文件。无论如何我可以提前确定文件下载后将获得哪个名称? -
恐怕这是不可能的,除非你四处寻找可能循环下载的文件夹以检查扩展名为
.crdownload的文件是否已完成并且它不再具有此扩展名。然后,您可以获取它的名称并将其传递给os.rename()方法。 PS。.crdownload方式适用于 Chrome。
标签: python python-3.x selenium selenium-webdriver web-scraping