0

我正在尝试下载不同年份不同季度的所有master.idx文件。EDGAR FTP 的结构如下:“edgar/full-index/2011/QTR3/”,QTR3 文件夹中有master.idx 文件。

我试图通过循环访问不同年份的文件夹,但它返回 550 错误。所以我试着像这样测试循环。

from ftplib import FTP
ftp = FTP('ftp.sec.gov')
ftp.set_debuglevel(2)
ftp.login('anonymous','shijiehkj@gmail.com')

QtrList = ('QTR1','QTR2','QTR3','QTR4')
year = 2013    
ftp.cwd('edgar/full-index/'+str(year))
print(ftp.nlst())
year = 2014    
ftp.cwd('edgar/full-index/'+str(year))
print(ftp.nlst())
ftp.quit()

year = 2013 部分有效,但是当我重置 year = 2014 时,它给了我这样的错误。

550 edgar/full-index/2014: No such file or directory

但是,如果我在 2013 年和 2014 年之间再次添加登录信息,就像这样

year = 2013    
ftp.cwd('edgar/full-index/'+str(year))
print (ftp.nlst("QTR1"),year)

ftp = FTP('ftp.sec.gov')
ftp.set_debuglevel(2)
ftp.login('anonymous','shijiehkj@gmail.com')

year = 2014    
ftp.cwd('edgar/full-index/'+str(year))
print (ftp.nlst("QTR1"),year)

没有错误。任何人都知道为什么并且可以提供快速解决方案来访问每年文件夹中每个季度文件夹中的 master.idx 吗?

4

1 回答 1

0

世杰,

您的错误是由于 FTP 服务器上的相对路径与绝对路径所致。在你的路径前面扔一个“/”,你应该很高兴。我相信它正在尝试从子目录中执行 cd {your new FTP directory}。有点像能够从任何位置 cd /home,但不能从任何位置 cd home。

from ftplib import FTP
ftp = FTP('ftp.sec.gov')
ftp.set_debuglevel(2)
ftp.login('anonymous','shijiehkj@gmail.com')

QtrList = ('QTR1','QTR2','QTR3','QTR4')
year = 2013    
ftp.cwd('/edgar/full-index/'+str(year))
print(ftp.nlst())
year = 2014    
ftp.cwd('/edgar/full-index/'+str(year))
print(ftp.nlst())
ftp.quit()
于 2015-12-21T02:18:36.123 回答