【发布时间】:2021-08-01 07:52:45
【问题描述】:
您好,我是社区的新手,也是 Python 的新手,在其他高级语言方面经验丰富但生疏,所以我的问题很简单。
我编写了一个简单的脚本来连接到私人 ftp 服务器,并从中检索日常信息。
from ftplib import FTP
#Open ftp connection
#Connect to server to retrieve inventory
#Open ftp connection
def FTPconnection(file_name):
ftp = FTP('ftp.serveriuse.com')
ftp.login('mylogin', 'password')
#List the files in the current directory
print("Current File List:")
file = ftp.dir()
print(file)
# # #Get the latest csv file from server
# ftp.cwd("/pub")
gfile = open(file_name, "wb")
ftp.retrbinary('RETR '+ file_name, gfile.write)
gfile.close()
ftp.quit()
FTPconnection('test1.csv')
FTPconnection('test2.csv')
这就是整个脚本,它传递我的凭据,然后在我正在检索的两个不同文件上调用函数 FTPconnection。
然后我处理它们的另一个脚本有一个导入语句,因为我试图将此脚本称为模块,我的导入只是连接到 FTP 服务器并获取信息。
import ftpconnect as ftpc
这是在另一个 Python 脚本上进行处理的。 它可以工作,但我想改进它,所以我需要一些关于如何做到这一点的最佳实践的指导,因为在 Spyder 4.1.5 中我收到“模块 ftpconnect 已调用但未使用”警告......所以我可能在这里遗漏了一些东西,我正在使用 Anaconda 和 Python 3.8.5 在 MacOS 上进行开发。
我正在尝试构建一个应用程序,以自动化一些任务,但我找不到任何关于指导我编写更好代码的模块的信息,它只是说你必须导入你使用的任何 .py 文件名,这将被视为一个模块... 我的最后一个问题是您通常如何保护私人信息(ftp 凭据)不被暴露?这与保护我的代码无关,而是凭据。
【问题讨论】:
-
通常导入模块只定义函数和变量,导入它的脚本调用函数。导入模块来实际完成传输文件等所有工作是不寻常的。您的 IDE 假设是这种情况,因此当它看不到您从未调用任何导入的函数时会发出警告。
-
好的@Barmar,感谢您的洞察力,如何支持您的回复?所以我无能为力,所以如果不是调用 ftpconnect.py 脚本上的函数以在我用于处理的脚本中调用它们,那么它会起作用,那么我该如何保护私人信息?这些凭据足以使用 Unix 权限还是有另一种常见做法?
-
我的评论只是关于
Module ftpconnect called but unused警告,与凭证存储无关。 -
您可以通过在导入的脚本中调用
ftpc.FTPconnection('test1.csv')来解决这个问题。
标签: python python-3.x ftp credentials python-module