为什么我会得到“ftplib.error\u perm错误:550“拒绝访问”打开。重命名?

2024-09-24 04:18:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在上传一个文件,然后我想移动它。上载部分工作,但移动尝试引发访问错误。为什么?我还尝试移动目录中已有的文件,但这会导致相同的错误。你知道吗

为了简化,我将文件“移动”到我成功写入的目录中。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();

Tags: 文件目录txtsession错误ftp帐户file
1条回答
网友
1楼 · 发布于 2024-09-24 04:18:06
session.cwd("XXX\TestPyUpload\upload");

您当前的工作目录现在是XXX\TestPyUpload\upload。你知道吗

session.storbinary('STOR movethis.txt', file);

这会将文件movethis.txt保存到当前工作目录中,即路径为XXX\TestPyUpload\upload\movethis.txt。你知道吗

session.rename("XXX\TestPyUpload\upload\movethis.txt", "XXX\TestPyUpload\upload\movethis2.txt");

我们不知道XXX到底是什么。但如果它不是以\开头,它就是一条相对路径。在本例中,rename命令中的名称是相对于当前工作目录(XXX\TestPyUpload\upload)进行解释的,即您将XXX\TestPyUpload\upload\XXX\TestPyUpload\upload\movethis.txt重命名为XXX\TestPyUpload\upload\XXX\TestPyUpload\upload\movethis2.txt。源目录和目标目录都不存在,这解释了服务器引发的错误。你知道吗

... session.rename("movethis.txt", "movethis2.txt"); does indeed work.

这些名称也是相对于工作目录来解释的,也就是说,您按照最初的意图将XXX\TestPyUpload\upload\movethis.txt重命名为XXX\TestPyUpload\upload\\movethis2.txt。你知道吗

... So does session.rename("\XXX\TestPyUpload\upload\movethis.txt", "\XXX\TestPyUpload\upload\movethis2.txt"); (added \ at the beginning).

在本例中,您使用的是绝对文件名,因此它不考虑当前工作目录,从而避免了原来的问题。你知道吗

相关问题 更多 >