Ali*_*iBZ 12 python pycurl ftplib
我在python中使用pycurl通过ftp传输文件.我可以使用以下命令在远程服务器上自动创建缺少的目录:
c.setopt(pycurl.FTP_CREATE_MISSING_DIRS, 1)
Run Code Online (Sandbox Code Playgroud)
由于某些原因,我必须切换到ftplib.但我不知道如何在这里相同.是否有任何选项可以添加到storbinary函数来做到这一点?或者我必须手动创建目录?
Ale*_*x L 17
FTP_CREATE_MISSING_DIRS是卷曲操作(在此处添加).我猜测你必须用ftplib手动完成它,但我很想被证明是错的,有人吗?
我会做类似以下的事情:(未经测试,需要抓住ftplib.all_errors)
ftp = ... # Create connection
# Change directories - create if it doesn't exist
def chdir(dir):
if directory_exists(dir) is False: # (or negate, whatever you prefer for readability)
ftp.mkd(dir)
ftp.cwd(dir)
# Check if directory exists (in current location)
def directory_exists(dir):
filelist = []
ftp.retrlines('LIST',filelist.append)
for f in filelist:
if f.split()[-1] == dir and f.upper().startswith('D'):
return True
return False
Run Code Online (Sandbox Code Playgroud)
或者你可以这样做directory_exists:(有点难读?)
# Check if directory exists (in current location)
def directory_exists(dir):
filelist = []
ftp.retrlines('LIST',filelist.append)
return any(f.split()[-1] == dir and f.upper().startswith('D') for f in filelist)
Run Code Online (Sandbox Code Playgroud)
lec*_*cnt 10
我知道这是一个很老的帖子,但我只是需要这个,并提出了一个非常简单的功能.我是Python的新手,所以我很感激任何反馈.
from ftplib import FTP
ftp = FTP('domain.com', 'username', 'password')
def cdTree(currentDir):
if currentDir != "":
try:
ftp.cwd(currentDir)
except IOError:
cdTree("/".join(currentDir.split("/")[:-1]))
ftp.mkd(currentDir)
ftp.cwd(currentDir)
Run Code Online (Sandbox Code Playgroud)
用法示例:
cdTree("/this/is/an/example")
Run Code Online (Sandbox Code Playgroud)