FTP дает ошибку 550 при двойном использовании ftp.cwd () - PullRequest
1 голос
/ 24 октября 2019

Когда я запускаю эту часть:

directory = ftp.pwd()
file_name = 'config.single'
ftp.cwd('plugins/GAListener')
print('dir:', directory)
ftp.cwd('plugins/CrateReloaded/crates')

Там написано:

ftplib.error_perm: 550 Нет такого файла или каталога.

Когда я несколько раз меняю каталог внутри оператора if, он работает нормально.

Вы не можете изменить рабочий каталог таким образом? Нужно ли выполнять сброс в основной каталог сервера, прежде чем перейти на другой? Если да, то как мне это сделать?

Какая бы директива ни была в коде первой, та, к которой она идет, затем выдает ошибку при попытке перейти на вторую. Со вторым ftp.cwd() закомментированным, первый работает без проблем, независимо от того, на какой каталог он указывает, поэтому они определенно оба там.

Кроме того, когда я печатаю directory, он просто печатает/, а не plugins/GAListener.

Редактировать: При выполнении этого внутри оператора if все каталоги идут туда, куда они должны, и мне не дают ошибок без косой черты.

if day_of_week == 0 and file_name not in ftp.nlst():
    ftp.rename('config.yml', 'config.single')
    ftp.rename('config.double', 'config.yml')
    print('plugins/GAListener/config.yml is now plugins/GAListener/config.single.')
    print('plugins/GAListener/config.double is now plugins/GAListener/config.yml.')
    ftp.cwd('plugins/MOTDCountdown')
    ftp.rename('config.yml', 'config.sunday')
    ftp.rename('config.monday', 'config.yml')
    print('plugins/MOTDCountdown/config.yml is now plugins/MOTDCountdown/config.sunday.')
    print('plugins/MOTDCountdown/config.monday is now plugins/MOTDCountdown/config.yml.')
    ftp.cwd('plugins/Essentials')
    ftp.rename('motd.txt', 'motd.sunday')
    ftp.rename('motd.monday', 'motd.txt')

1 Ответ

0 голосов
/ 24 октября 2019

После первого cwd вы попадаете в папку:

/plugins/GAListener

Изменение относительного пути plugins/CrateReloaded/crates (без начального слеша) разрешит его в текущем рабочем каталоге. Поэтому он попытается открыть папку:

/plugins/GAListener/plugins/CrateReloaded/crates

Который, скорее всего, не существует.

Я предполагаю, что вы хотите перейти к

/plugins/CrateReloaded/crates

Для этого у вас естьиспользовать абсолютный путь (с косой чертой):

ftp.cwd('/plugins/CrateReloaded/crates')
...