2012-02-22 7 views
1

Python newb ...注意!なぜ再帰FTPはこのディレクトリで動作しませんか?

いくつかのファイルを再帰的にftpしようとしています。以下のスクリプトでは、エラーが発生します。

Traceback (most recent call last): 
    File "dump.py", line 7, in <module> 
    for root,dirs,files in recursive: 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftputil.py", line 880, in walk 
    if self.path.isdir(self.path.join(top, name)): 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftp_path.py", line 133, in isdir 
    path, _exception_for_missing_path=False) 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftputil.py", line 860, in stat 
    return self._stat._stat(path, _exception_for_missing_path) 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftp_stat.py", line 624, in _stat 
    _exception_for_missing_path) 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftp_stat.py", line 578, in __call_with_parser_retry 
    result = method(*args, **kwargs) 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftp_stat.py", line 543, in _real_stat 
    lstat_result = self._real_lstat(path, _exception_for_missing_path) 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftp_stat.py", line 502, in _real_lstat 
    for stat_result in self._stat_results_from_dir(dirname): 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftp_stat.py", line 419, in _stat_results_from_dir 
    lines = self._host_dir(path) 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftp_stat.py", line 411, in _host_dir 
    return self._host._dir(path) 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftputil.py", line 811, in _dir 
    descend_deeply=True) 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftputil.py", line 578, in _robust_ftp_command 
    self.chdir(path) 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftputil.py", line 603, in chdir 
    ftp_error._try_with_oserror(self._session.cwd, path) 
    File "/usr/local/lib/python2.6/site-packages/ftputil/ftp_error.py", line 146, in _try_with_oserror 
    raise PermanentError(*exc.args) 
ftputil.ftp_error.PermanentError: 550 /usr/local/web: No such file or directory 
Debugging info: ftputil 2.6, Python 2.6.5 (linux2) 

Exited: 256 

私はそれが何を意味するのか分かりません。しかし、ディレクトリを "/ path/dir2"に変更すると、 "file.txt"が出力されます。

/path/dir1/another/file.txt # I get the above error with this path 
/path/dir2/another/file.txt # this works fine, even though the directories have the same structure 

マイスクリプト:ここ

は私のディレクトリ構造です

ftp = ftputil.FTPHost('ftp.site.com','user','pass') 
recursive = ftp.walk("/path/dir1",topdown=True,onerror=None) 
for root,dirs,files in recursive: 
for name in files: 
    print name 
ftp.close 

答えて

2

ftputil インポートでは、/ usr/local /ウェブに戻って指すsymblolicリンクに/ path/dir1のは/あり?

このエラーをステップオーバーする場合は、中のtry catchブロックを入れてログインでき...

ftp = ftputil.FTPHost('ftp.site.com','user','pass') 
try: 
    recursive = ftp.walk("/path/dir1",topdown=True,onerror=None) 
    for root,dirs,files in recursive: 
     for name in files: 
       print name 
except Error e: 
    print "Error: %s occurred" % (e) 
ftp.close 

上記のすべてのエラーをキャッチします。あなたはまた、特定のエラーを取得してこれを取得することができます...

import ftputil.ftp_error.PermanentError as PermanentError 
ftp = ftputil.FTPHost('ftp.site.com','user','pass') 
try: 
    recursive = ftp.walk("/path/dir1",topdown=True,onerror=None) 
    for root,dirs,files in recursive: 
     for name in files: 
       print name 
except PermanentError e: 
    print "Permanent Error: %s occurred" % (e) 
ftp.close 
+0

それは可能かもしれませんが、私は本当にFTPサイトはサードパーティーなので、全くわかりません。そうであれば、どのようにシンボリックリンクを持つファイルを「スキップする」ことができますか? – usr951

+0

エラーをキャッチして –

+0

thxに移動する方法を編集を参照してください。エラーの後には移動しません。それは一度エラーを印刷し、その後死ぬ – usr951

関連する問題