两次使用ftp.cwd()时,FTP产生550错误

时间:2019-10-24 14:41:08

标签: python ftp ftplib

当我运行此部分时:

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 :(得分:0)

第一个cwd之后,您将进入文件夹:

/plugins/GAListener

更改为相对路径plugins/CrateReloaded/crates(不带斜杠)将针对当前工作目录进行解析。因此它将尝试打开文件夹:

/plugins/GAListener/plugins/CrateReloaded/crates

最有可能不存在。

我想你想去

/plugins/CrateReloaded/crates

为此,您必须使用绝对路径(带有斜杠):

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