を@arnialのおかげ私は次のようにアップカム:(MLSDまたはNSLT)
use_mlsd = 1
if(use_mlsd):
# if ftp server supports mlsd, use it, nlst is maked as deprecated in ftplib
# check if remotefoldername exists
remotefoldername_exists = 0
for name, facts in f.mlsd(".",["type"]):
if facts["type"] == "dir" and name == "remote_ftp":
print("isdir: "+ name)
remotefoldername_exists = 1
break
if(remotefoldername_exists == 0)
ftp.mkd(remotefoldername)
logging.debug("folder does not exitst, ftp.mkd: " + remotefoldername)
else:
logging.debug("folder did exist: " + remotefoldername)
else:
# nlst legacy support for ftp servers that do not support mlsd e.g. vsftp
items = []
ftp.retrlines('LIST', items.append)
items = map(str.split, items)
dirlist = [ item.pop() for item in items if item[0][0] == 'd' ]
#print("directrys", directorys)
#print('remote_ftp' in directorys)
if not (remotefoldername in dirlist):
ftp.mkd(remotefoldername)
logging.debug("folder does not exitst, ftp.mkd: " + remotefoldername)
else:
logging.debug("folder did exist: " + remotefoldername)
は 'mlsd'はあなたのことを、あなたが定義することができる第二引数' facts'を、持っていますまた、型情報を取得したい(デフォルトでは、事実は空で、 'mlsd'は名前だけを取得する)。しかし、私はそれを確認するためにMLSDコマンドをサポートするFTPサーバーを見つけることができません。 – Arnial
もう少し研究をして、ついにそれを実現しました:
編集:コードフォーミングは痛みです:( –