2015-01-28 3 views
0

Я хотел бы перемещаться между двумя разными папками на одном и том же FTP-сервере в той же самой FTP-сессии, используя ftplib Python.Перемещение между различными папками на FTP-сервере с помощью Python

базовый сценарий я написал выглядит следующим образом (gbname и gffname назначены):

ensembl = FTP('ftp.ensemblgenomes.org') 
ensembl.login() 

ensembl.cwd("pub/fungi/current/genbank/") 
ensembl.retrbinary('RETR ' + gbname, open(gbname, 'wb').write) 

ensembl.cwd("pub/fungi/current/gff/") 
ensembl.retrbinary('RETR ' + gffname, open(gffname, 'wb').write) 

ensembl.quit() 

Этот скрипт tracebacks на втором Дов со следующей ошибкой «ftplib.error_perm: 550 Не удалось изменить каталог.» ,

Я понимаю, почему это tracebacks там и я могу решить эту проблему путем проведения двух различных сеансов FTP следующим образом:

ensemblgb = FTP('ftp.ensemblgenomes.org') 
ensemblgb.login() 
ensemblgb.cwd("pub/fungi/current/genbank/") 
ensemblgb.retrbinary('RETR ' + gbname, open(gbname, 'wb').write) 
ensemblgb.quit() 

ensemblgff = FTP('ftp.ensemblgenomes.org') 
ensemblgff.login() 
ensemblgff.cwd("pub/fungi/current/gff/") 
ensemblgff.retrbinary('RETR ' + gffname, open(gffname, 'wb').write) 
ensemblegff.quit() 

Однако, мне было интересно ли, когда я изменить каталог в «Паб/грибы/current/genbank/", можно было бы поменять его на" pub/fungi/current/gff/"позже (возможно, проходя через корневую папку между?) в том же сеансе FTP, не закрывая его и не открывая новый ,

Приветствия,

Nicola

+0

Вы пробовали? Причина, по которой вам нужно 2 FTP-подключения для одновременного отображения двух разных каталогов, - это то, как работает FTP. Но ничто не мешает вам ходить по дереву каталогов (части, к которым вы разрешаете доступ), как вам угодно, с помощью любого соединения. – Chewie

ответ

0

Попробуйте предваряя обратную косую черту на пути - это означает корневой каталог:

ensemblgff.cwd("/pub/fungi/current/gff/") 
+0

Дополнительный «/» сделал трюк. Большое спасибо. –

Смежные вопросы