当我运行此部分时:
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')
答案 0 :(得分:0)
第一个cwd
之后,您将进入文件夹:
/plugins/GAListener
更改为相对路径plugins/CrateReloaded/crates
(不带斜杠)将针对当前工作目录进行解析。因此它将尝试打开文件夹:
/plugins/GAListener/plugins/CrateReloaded/crates
最有可能不存在。
我想你想去
/plugins/CrateReloaded/crates
为此,您必须使用绝对路径(带有斜杠):
ftp.cwd('/plugins/CrateReloaded/crates')