gpt4 book ai didi

Python ftplib.error_perm 550 : No such file or directory?

转载 作者:太空宇宙 更新时间:2023-11-03 16:15:22 24 4
gpt4 key购买 nike

我已经编写了一个 Python 脚本,它是我尝试自动从服务器进行日常 ftp 传输的一部分。我已经使用许多文件和文件类型(html、mp3、png、jpg 等)测试了该脚本,到目前为止一切似乎都运行良好。但是,当我尝试下载一个简单的文本文件“file.txt”(9 kb)时,下载失败,尽管我考虑了文本文件并从二进制模式切换到文本模式进行传输。 ftplib 抛出以下异常:

ftplib.error_perm: 550 file.txt: No such file or directory

这是我的脚本:

from ftplib import FTP_TLS, error_perm
import os


def open_connection(server, user, pwd, work_dir=None):
global ftps
try:
ftps = FTP_TLS(host=server)
ftps.login(user=user, passwd=pwd)
ftps.prot_p() # switch to secure data connection
if work_dir != None:
ftps.cwd(work_dir)
else:
pass
except:
pass


def download_file(remote_path, local_path):
remote_file = os.path.basename(remote_path)
local_file_path = os.path.join(local_path, remote_file)

# differentiate between text and binary files
file_type, encoding = guess_type_and_encoding(remote_file)

# possibly needs a permission exception catch
if file_type.split("/")[0] == "text" and encoding == None:
# use text mode for transfer
local_file = open(local_file_path, 'w')
def callback(line): local_file.write(line + "\n")
ftps.retrlines("RETR " + remote_file, callback)
local_file.close()

else:
# use binary mode for transfer
local_file = open(local_file_path, 'wb')
ftps.retrbinary("RETR " + remote_file, local_file.write)
local_file.close()
return


def guess_type_and_encoding(filename):
from mimetypes import guess_type, add_type
add_type('text/x-python-win', '.pyw') # not in tables
mimetype, encoding = guess_type(filename, False) # allow extras
mimetype = mimetype or "?/?" # type unknown
return mimetype, encoding


open_connection(server, user, pwd, work_dir)
download_file("/files/dir/file.txt", "/Users/username/Desktop")
ftps.close()

我不明白为什么会出现错误!?正确提供了参数“remote_path”和“local_path”。两条路都存在! “file.txt”存在于服务器上的/files/dir 下,并且/Users/username/Desktop 指向我在 OS X 上的桌面。

这是详细的 ftplib 错误:

Traceback (most recent call last):
File "ftp2.py", line 138, in <module>
download_file("/files/dir/file.txt", "/Users/username/Desktop")
File "ftp2.py", line 93, in download_file
ftps.retrlines("RETR " + remote_file, callback)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ftplib.py", line 735, in retrlines
conn = self.transfercmd(cmd)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ftplib.py", line 376, in transfercmd
return self.ntransfercmd(cmd, rest)[0]
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ftplib.py", line 710, in ntransfercmd
conn, size = FTP.ntransfercmd(self, cmd, rest)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ftplib.py", line 339, in ntransfercmd
resp = self.sendcmd(cmd)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ftplib.py", line 249, in sendcmd
return self.getresp()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ftplib.py", line 224, in getresp
raise error_perm, resp
ftplib.error_perm: 550 file.txt: No such file or directory

非常感谢任何帮助。谢谢。 :)

最佳答案

尝试替换 remote_file ftps.retrlines("RETR "+ remote_file, 回调) remote_path

关于Python ftplib.error_perm 550 : No such file or directory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38982146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com