我试图从ftp服务器下载文件,但我遇到了错误权限被拒绝的错误。IOError:[Errno 13]权限被拒绝 - ftplib
Traceback (most recent call last):
File "/Users/x34/Documents/Python/ftp_download.py", line 27, in <module>
download()
File "/Users/x34/Documents/Python/ftp_download.py", line 21, in download
with open(filename,'wb') as f:
IOError: [Errno 13] Permission denied: '/p012r018_5dt19900722_z20_30.tif.gz'
手动或使用FileZilla的下载工作正常,但我下面的脚本不
from ftplib import ftp
ftp = FTP(r'ftp.glcf.umd.edu')
ftp.login()
directory = 'glcf/Landsat/WRS2/p012/r018/p012r018_5dx19900722.TM-GLS1990'
filename = '/p012r018_5dt19900722_z20_30.tif.gz'
ftp.cwd(directory)
with open(filename,'wb') as f:
ftp.retrbinary('RETR' + filename,f.write)
ftp.close()
彼此音符......也许我看错文档 - http://docs.python.org/library/ftplib.html但我不完全明白的地方FTPLIB决定下载文件(默认下载目录?)。是否有另一个模块更适合此应用程序?
UPDATE
我要澄清的是,服务器上的文件名不包含前面的“/”。我只是补充说,因为它似乎有助于找到正确的文件位置和名称,因为之前的尝试在以下错误中结束: ftplib.error_perm:500未知命令。
的完整路径,该文件是
ftp.glcf.umd.edu/glcf/Landsat/WRS2/p012/r018/p012r018_5dx19900722.TM-GLS1990/p012r018_5dt19900722_z20_30.tif.gz'
它看起来像你的脚本试图下载的内容将文件保存在根目录(/ ')你的文件系统。你有足够的权限吗? 它试图用原始文件名保存文件,并在前面加上'/',从而在'/'处创建文件。 – 2012-08-10 23:43:02
添加/在前面的主要原因是,它似乎向前迈进了一步,因为在它给我另一个错误之前,这是该追踪的最后部分 - >“/Library/Frameworks/Python.framework/Versions/2.7 /lib/python2.7/ftplib.py“,第219行,在getresp中 raise error_perm,resp ftplib.error_perm:500未知命令。 – BJEBN 2012-08-10 23:58:45
尝试在代码中的“REPR”后添加空格字符。我已经更新了答案中的代码。您将“REPR”与文件名连接起来,但正确的是:“REPR文件。txt“ – 2012-08-11 01:13:39