dir到ftp服务器中的文件及目录,Python3:在某些目录中对ftp命令“dir”的权限被拒绝...

情况:

我正在尝试编写一个ftp文件自动升级和下载程序。它将遍历我的文件并自动上传新文件。ftp服务器内置在我的wifi路由器中。我已经在我的Ubuntu文件系统中加入了ftp服务器,一切正常(我可以访问所有东西)。主网站就像家庭文件夹和我自己的文件夹。在

现在我的问题是:

到目前为止,我能够连接到服务器并切换到我的目录并列出文件夹。但是如果我想从这个目录变成C++(它是我目录中的一个文件夹),我会得到一个错误消息,表示“权限被拒绝”。用于登录的用户帐户与我的文件系统包含中使用的相同。在

python 3代码:from ftplib import FTP_TLS

class ftp_client():

def __init__(self, host, unandpw):

self.host = host

self.logindata = unandpw #should be a touple

self.ftp = FTP_TLS(self.host)

self.ftp.login(self.logindata[0], self.logindata[1])

self.ftp.prot_p()

def scan(self):

self.ftp.cwd("/" + self.logindata[0] + "/")

self.listoffiles = self.ftp.nlst()

print("list of files: " + str(self.listoffiles))

for file in self.listoffiles:

self.ftp.cwd("/" + str(file) + "/")

self.listoffilesinfiles = self.ftp.nlst()

print(self.listoffilesinfiles)

self.ftp.cwd("/" + self.logindata[0] + "/")

我通过外部主文件调用它。。。在

控制台输出:

^{pr2}$

现在我的问题(很明显)是:我怎样才能解决这个问题?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 `ftplib` 库来实现创建FTP目录的功能。以下是一个示例代码,可以实现如果FTP不存在此目录,则逐级创建目录的功能: ```python import ftplib # 连接FTP服务器 ftp = ftplib.FTP("ftp.example.com") ftp.login("username", "password") # 需要创建的目录路径 directory = "/remote/directory/path/subdirectory" # 逐级创建目录 dirs = directory.split('/') for dir in dirs: try: ftp.cwd(dir) except ftplib.error_perm: # 目录不存在,创建目录 ftp.mkd(dir) print(f"Directory '{dir}' created successfully.") ftp.cwd(dir) # 关闭FTP连接 ftp.quit() ``` 请将上述代码的 `"ftp.example.com"`、`"username"`、`"password"` 和 `"/remote/directory/path/subdirectory"` 替换为你实际的FTP服务器地址、登录账号、登录密码和需要创建的远程目录路径。 代码,首先将需要创建的目录路径按照 `/` 分隔开来,得到一个目录名列表。然后使用 `ftp.cwd(dir)` 逐级切换到每个目录,如果目录不存在,则会抛出 `ftplib.error_perm` 异常。在异常处理块,使用 `ftp.mkd(dir)` 来创建目录,并输出创建成功的提示信息。同时,还需要使用 `ftp.cwd(dir)` 切换到新创建的目录,以便后续继续创建子目录。 需要注意的是,FTP服务器可能会限制用户的权限,如果当前用户没有创建目录权限,`ftp.mkd(dir)` 也会抛出异常。在这种情况下,可以尝试使用 `ftp.sendcmd('SITE MKDIR '+dir)` 来创建目录,这个命令可以绕过某些FTP服务器权限限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值