名称错误:名称';ftp';未定义,Python

名称错误:名称';ftp';未定义,Python,python,ftp,global-variables,nameerror,Python,Ftp,Global Variables,Nameerror,即使我声明了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 'f

即使我声明了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

在使用ftp之前,我尝试将其设置为全局变量,但在
uploadFTP()
的范围内,仍然不知道相同的错误。使用类、全局变量(使用
全局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()

此外,您不会对从
uploadFTP()
(尚未?)返回的
列表执行任何操作。

请修复缩进并包含完整的错误消息。您很可能忘记声明
ftp
,因为
global
中不知道
uploadFTP()
。使用一个类或传递对象。非常感谢。这个列表是为另一个我没有包含在这个线程中的函数准备的。
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()