NameError: name 'ftp' is not defined, Python

NameError: name 'ftp' is not defined, Python

即使我声明了 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使用它之前将其设为全局变量,但仍然出现相同的错误

ftpuploadFTP()范围内不为人知。使用 class、全局变量(使用 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()

另外,您没有对 uploadFTP() 返回的 list_local 做任何事情(还没有?)。