2017-09-25 99 views
0

是否可以使用urlretrieve()将某些内容下载到子文件夹中而不以绝对但相对的方式表达它? 例如:使用urlretrieve()将子文件下载到子文件夹

urllib.request.urlretrieve(url, '/downloads/2017/foo.txt') 

每次我添加路径文件名蟒蛇抛出以下错误:

File "C:\Program Files\Python36\lib\urllib\request.py", line 258, in urlretrieve tfp = open(filename, 'wb') FileNotFoundError: [Errno 2] No such file or directory: '/downloads/2017/foo.txt'

但是,当我使用此代码:

urllib.request.urlretrieve(url, 'foo.txt') 

它高兴地下载文件。

我想我在这里缺少一些基本的东西,但在搜索interwebs很长一段时间后,我还没有找到答案。有谁知道在urlretrieve()方法中应该如何表达相对路径?

+0

删除前导斜杠 - 使用''downloads/2017/foo.txt''。主要的斜杠告诉你的计算机去到文件系统的根目录(即到'C:\\')。要有相对于当前目录的路径,您不要以斜杠开始。 –

+0

@HaydenSchiff还是一样的错误。我什至尝试使用双反斜杠,我得到同样的错误。 – stendarr

+1

在运行此脚本的目录中是否已存在文件夹“downloads”和“2017”? –

回答

0

使用urllib.request.urlretrieve()时,您需要确保如果要将文件保存在程序位置以外的其他位置,则您引用的文件夹已存在。另外,您可以使用下面的代码来生成您需要的文件夹,如果它们不存在:

for i in directories: 
    if not os.path.isdir(i): 
     os.makedirs(i) 

检查拼写错误,如果你仍然得到了FileNotFoundError

相关问题