NameError: имя ftp не определено, Python - PullRequest
0 голосов
/ 09 июля 2020

Я получаю эту ошибку, хотя я объявил ftp.

Вот полное сообщение об ошибке:

File "./sFTPscript.py", line 173, in <module> main()
File "./sFTPscript.py", line 167, in main uploadFTP()
File "./sFTPscript.py", line 33, in uploadFTP ftp.pwd()

NameError: name 'ftp' is not defined

-

from ftplib import FTP
import os
import sys
import kunden.config as config


def connFTP():
ftp = FTP(config.host)
ftp.login(config.username,config.password)
print("connected")

def uploadFTP():
os.chdir(config.localpath)
ftp.pwd()
ftp.cwd('test')
list_local = os.listdir(config.localpath)
for file in list_local:
    ftp.storbinary('STOR '+file, open(file,'rb'))

return list_local

def main():

    connFTP()
    uploadFTP()

if __name__ == '__main__':
    main()

Я пытался сделайте ftp глобальной переменной, прежде чем она будет использована, но все та же ошибка

1 Ответ

1 голос
/ 09 июля 2020

ftp неизвестно в рамках uploadFTP(). Либо используйте класс, глобальную переменную (используйте global ftp), либо передайте объект. Последний может быть:

def connFTP():
    ftp = FTP(config.host)
    ftp.login(config.username,config.password)
    print("connected")
    return ftp
    #      ^^^

def uploadFTP(ftp=None):
    os.chdir(config.localpath)
    ftp.pwd()
    ftp.cwd('test')
    list_local = os.listdir(config.localpath)
    for file in list_local:
        ftp.storbinary('STOR '+file, open(file,'rb'))
    
    return list_local

def main():

    ftp = connFTP()
    uploadFTP(ftp)
    #         ^^^

if __name__ == '__main__':
    main()

Кроме того, вы ничего не делаете с возвращенным list_local из uploadFTP() (пока?).

...