在Python文件之间传递命令行变量。完全是斯图

2024-03-29 09:49:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个看起来很简单的问题,有一个简单的解决办法,只是超出了我的能力。在

我的设置:

A)驱动程序文件(运行测试脚本) B) 连接文件(使用请求) C) 参数文件

参数文件有6个变量,包括服务器IP、登录名、密码等

驱动程序文件有一个praser,它读取属性文件并填充空白。在

driver.py paramtersfile.csv

这个很好用。但是,我在参数文件中添加了一个端口变量,它需要B)连接文件查看。此连接文件从不显式调用,而是导入到驱动程序文件中,用于其连接和cookie方法。在

如何将解析的变量(从系统argv)从参数文件.csv到连接文件(或用于运行脚本的任何其他文件?在

感谢stackoverflow社区

编辑:

我用一种很明显的方式,把论点传递到课堂上(self.foo公司)我需要的任何模块/文件。在

我之前的问题是这样的:

你做的事情

加载属性(属性文件)

然后从任何其他python脚本中

导入propertyloader

它会将不可变属性的列表加载到当前空间中

看起来做起来很方便

url=propertyloader.url在

而不是

类连接(主机、端口、过程、url):

自己。网址=网址

loader=请求(安全,url

废话连篇。。。在

在脚本的不同部分之间共享公共参数似乎是一种无需头痛的方式。在

也许还是有办法的(额外的信用问题)


Tags: 文件csv端口ip服务器脚本url参数
1条回答
网友
1楼 · 发布于 2024-03-29 09:49:11

从驱动程序.py文件,将连接文件作为模块导入,并将已解析的参数传递给模块内的方法。像这样:

#===inside driver.py===
import connections

params = parseFile(sys.argv) #get parameters from the csv file that is passed to the command line
connections.connect(params)  #pass them to whatever method you need to call from connections

编辑:听起来你没有以模块化的方式编写代码。你应该停止从文件的角度来考虑你的代码,而应该从模块的角度来考虑它们:你可以在许多不同的地方使用的可互换的代码。我看到你的设计的主要缺陷(如果我没有正确理解请原谅)是你在用来创建连接对象的连接文件中硬编码了一个值。我猜这就是你的代码的样子(或者至少充分地抓住了代码的精髓):

^{pr2}$

上面的代码设计得不好,因为您定义了一个变量MY_SERVER,而这个变量本来就不应该在那里定义的!connections类不知道也不关心它应该使用什么服务器,它应该与任何服务器一起工作。那么从哪里得到服务器变量呢?通过构造函数或方法传入。你可以这样做:

#connections.py
class Connection:
    def __init__(self, server):
        self.server = server

def connect(server):
    connection = Connection(server) #create a new connection object with the server passed to the method

通过这种设计,连接对象变得更加灵活。它的基本意思是“我是一个可以处理任何服务器的连接对象。如果你想用我,告诉我你想用什么服务器!“。在

这样,在您的驱动程序文件中,您可以首先从csv解析服务器,然后简单地调用方法connections.connect,将其传递给您想要的服务器!在

相关问题 更多 >