从路径“文件”下载保存到“其他目录”python脚本问题

Posted

技术标签:

【中文标题】从路径“文件”下载保存到“其他目录”python脚本问题【英文标题】:download from path 'file' save to 'other directory' python script issue 【发布时间】:2020-03-26 22:36:38 【问题描述】:

需要帮助

获取文件所在位置的输入并告诉新目录将下载的 URL 保存到 filepath 变量假定带有链接的文本文档位于 python 脚本的位置 - 虽然这有效,但我也希望将其更改为直接。

    import os.path
    import urllib.request

    # Get one line of text (e.g. C:\user\user\path\directory)

    filepath = input('please input the url file path: ')
    links = open('links.txt', 'r')
    newpath = input('Where would you like to store the file? ')
    for link in links:`
        # then get the filename from the end of the URL
        link = link.strip()
        filename = link.rsplit('/', 1)[-1]

    # Does this file exist in this folder? If not, download it
    if not (os.path.isfile(filename)):
        print ('Downloading: ' + filename + " to " + newpath)
        try:
            urllib.request.urlretrieve(link, newpath + filename)
            print ("File size was", os.path.getsize(filename))
        except Exception as inst:
            print (inst)
            print ('  Encountered unknown error. Continuing.')

    # File exists; don't download
    else:
        print("This file exists already.")

# End of program
print("Finished downloading."

【问题讨论】:

请解释问题并告诉我们您真正想要做什么。您当前的描述对于您想要做什么几乎没有意义。 我正在尝试创建一个脚本,该脚本采用 .txt 或 .xml 文档(首先以 .txt 开头,以免过于复杂。)用户输入 (.txt) 文件所在的位置位于 - 在我的 python 脚本文件夹之外,并指示程序将下载项目的输出从列表中保存到依赖于用户输入的新文件夹中。 好的,可行!当前代码有什么问题,它的行为如何? "C:\Users\Archie\PycharmProjects\List 下载 test\venv\Scripts\python.exe" 请输入 url 文件路径:C:\Users\Archie\Desktop\list 你在哪里喜欢存储文件? C:\Users\Archie\Desktop\outputDL 这个文件已经存在。该文件已经存在。该文件已经存在。下载完毕。进程以退出代码 0 完成,文件在 python 脚本文件夹中下载很好,并给我这个输出(它们当前在那里) newpath 变量似乎没有连接,我不知道如何修复它。跨度> 【参考方案1】:

如果您的错误是关于为什么 newpath 似乎没有连接到它。这是因为我相信,在这行代码urllib.request.urlretrieve(link, newpath + filename) 中,link 参数不代表任何东西。您可以尝试打印该值并查看它打印的内容。

请注意,for 循环中的link 是一个局部变量,其中保存的任何内容都无法在代码的其他任何地方访问。

for link in links:`
   # then get the filename from the end of the URL
   link = link.strip()
   filename = link.rsplit('/', 1)[-1]

尝试在循环外定义一个名为link 的全局变量,以便保存在循环中的值可以保留在代码中的任何地方使用。 像这样,

filepath = input('please input the url file path: ')
links = open('links.txt', 'r')
newpath = input('Where would you like to store the file? ')
link = ""

【讨论】:

"C:\Users\Archie\PycharmProjects\List 下载 test\venv\Scripts\python.exe" 请输入 url 文件路径:C:\Users\Archie\Desktop\list 你在哪里喜欢存储文件? C:\Users\Archie\Desktop\outputDL 下载:aardvark_014.jpg 到 C:\Users\Archie\Desktop\outputDL [WinError 2] 系统找不到指定的文件:'aardvark_01.jpg' 遇到未知错误。继续。下载完毕。这是我将它定向到 C:\outputDL 时得到的输出,如果我将第一个输入留空,python 脚本文件夹中的列表将正确下载。 你能用这个print ('Downloading: ' + filename + " to " + newpath + " "+ link) 替换print ('Downloading: ' + filename + " to " + newpath) 并告诉我输出吗 "C:\Users\Archie\PycharmProjects\List 下载 test\venv\Scripts\python.exe" 请输入 url 文件路径:C:\Users\Archie\Desktop\list 你在哪里喜欢存储文件? C:\Users\Archie\Desktop\outputDL 下载:aardvark_thumb.jpg 到 C:\Users\Archie\Desktop\outputDL nationalgeographic.com/content/dam/animals/thumbs/rights-exempt/… [WinError 2] 系统找不到指定的文件:'aardvark_thumb.jpg' 遇到未知错误。继续。 Traceback(最近一次调用最后):文件“C:/Users/Archie/PycharmProjects/List download test/Downloadlist.py”,第 5 行,在 links = open('url. txt', 'r') FileNotFoundError: [Errno 2] No such file or directory: 'url.txt' # 如果我更改了不在 python 库根目录中的 .txt 的名称,我会收到此错误,这可能是我缺少关键代码?# 你可以试试urllib.request.urlretrieve("https://www.nationalgeographic.com/content/dam/animals/thumbs/rights-exempt/mammals/a/aardvark_thumb.JPG") 看看它是否有效?可能是它需要一个完整的 url 而你没有提供它。如果问题仍然存在,请参阅here 了解替代方案

以上是关于从路径“文件”下载保存到“其他目录”python脚本问题的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本里怎么实现从网上下载文件(链接已给定),冰保存到指定路径下,求高手指导

将音频文件下载到文件管理器需要从本地路径播放

关于使用python脚本将同级的其他目录下的所有文件根据年份移动到当脚本位置的年份目录

JavaScript - 将图像从 URL 保存到本地机器特定路径?

python关于文件保存的绝对路径

js如何保存文件