【发布时间】:2019-09-01 19:55:06
【问题描述】:
我正在上传一个文件,然后我想移动它。上传部分有效,但移动尝试引发访问错误。这是为什么?我也尝试移动目录中已经存在的文件,但这会导致同样的错误。
为了简化,我正在“移动”我成功写入的目录中的文件。 FTP 设置允许对帐户进行读/写/执行,并且使用 Filezilla 我也可以重命名文件。
代码:
import ftplib
testfile = "D:\movethis.txt";
session = ftplib.FTP('<IP>', '<U>', '<P>');
session.cwd("XXX\TestPyUpload\upload");
print(session.pwd());
file = open(testfile, 'rb');
session.storbinary('STOR movethis.txt', file);
session.rename("XXX\TestPyUpload\upload\movethis.txt", "XXX\TestPyUpload\upload\movethis2.txt");
file.close();
session.quit();
【问题讨论】:
-
您为客户端提供了代码,但对服务器一无所知 - 即使生成错误消息的是服务器。无论如何,我会尝试简化代码以不按完整路径重命名,而仅按文件名重命名(即
movethis.txt而不是XXX\TestPyUpload\upload\movethis.txt)。这在逻辑上应该是相同的,因为您的 CWD 已经是XXX\TestPyUpload\upload。也许它会起作用,但是(未知的)服务器可能会限制在上传目录中可以做什么(检查您的服务器配置)。此外,您最好在代码中转义您的\。 -
另外,您是否使用任何现有的 FTP 客户端测试重命名/移动文件?它有效吗?向我们展示它的日志文件。
-
@SteffenUllrich 我对服务器一无所知。
session.rename("movethis.txt", "movethis2.txt");确实有效。session.rename("\XXX\TestPyUpload\upload\movethis.txt", "\XXX\TestPyUpload\upload\movethis2.txt");也是如此(在开头添加了 \)。奇怪的是,当我这样做时,“上传”中的文件也被重命名,文件夹“服务”保持为空:session.rename("\XXX\TestPyUpload\upload\movethis.txt", "\XXX\TestPyUpload\serve\movethis2.txt");相当混乱..