Ftplib下载zip文件尝试失败([Errno 13]权限被拒绝:'C:\\ Users \\ kbrab \\ Desktop \\ 2019 \\ test.zip)

时间:2019-05-13 13:08:17

标签: python ftp ftplib

我一直在尝试建立一个自动python脚本,以将文件从远程FTP服务器下载到本地计算机。我能够建立连接,导航到目录,但是当尝试下载特定的zip文件时出现错误。

[Errno 13]权限被拒绝:'C:\ Users \ kbrab \ Desktop \ 2019 \ test.zip'

我尝试以管理员身份运行IDLE,还检查了本地路径目录是否创建正确。检查似乎是问题的其他类似帖子。 FTP服务器采用TLS / SSL隐式加密,python文件正在Windows VM上运行。

def checkKindred():
    time = a_day_in_previous_month()
    print(time)
    lines = []
    ftp_client.cwd('/kindred/')
    print("Current directory: " + ftp_client.pwd())
    ftp_client.retrlines('NLST',lines.append)
    nameCh = ("Attrition_"+str(time))
    for line in lines:
        if nameCh == line[:17]:
            print("found match")
            print(line)
            fileName = line
            unpackKindred(fileName,time)

def unpackKindred(name,time):
    local_path = "C:\\Users\\kbrab\\Desktop"
    local_path = os.path.join(local_path, str(time)[:4],"Attrition_2019-04-30.zip")
    if not os.path.exists(local_path):
        os.makedirs(local_path)
    try:
        filenames = ftp_client.nlst()
        ftp_client.retrbinary('RETR '+name, open(local_path, 'wb').write)      
    except Exception as e:
        print('Failed to download from ftp: '+ str(e))

该代码现在正在通过马丁的洞察力进行工作,在下面添加了更正的代码:

def unpackKindred(name,time):
    local_path = "C:\\Users\\kbrab\\Desktop"
    local_path = os.path.join(local_path, str(time)[:4])
    if not os.path.exists(local_path):
        os.makedirs(local_path)
    filename = os.path.join(local_path, name)
    file = open(filename, "wb")
    ftp_client.retrbinary("retr " + name, file.write)

2 个答案:

答案 0 :(得分:0)

这将创建一个文件夹 C:\Users\kbrab\Desktop\2019\test.zip

if not os.path.exists(local_path):
    os.makedirs(local_path)

这试图将文件夹视为文件:

ftp_client.retrbinary('RETR '+name, open(local_path, 'wb').write)      

答案 1 :(得分:-1)

检查文件夹的权限。对其进行设置,以便每个人都可以完全控制。