Python 我应该如何组织基本相同的脚本?
所以我是Python新手,我需要一些帮助来改善我的生活。我学习Python是为了工作,需要稍微减少工作量。我有三个不同的脚本,我在同一时间运行大约5个副本,它们读取XML数据和添加信息等。。。然而,当我对脚本进行更改时,我还必须更改其他5个文件,这在一段时间后很烦人。我不能只运行同一个脚本5次,因为每个文件都需要一些不同的参数,我在每个脚本的开头将这些参数作为变量存储在不同的文件路径中 但我肯定有更好的办法 一个很小的例子:Python 我应该如何组织基本相同的脚本?,python,Python,所以我是Python新手,我需要一些帮助来改善我的生活。我学习Python是为了工作,需要稍微减少工作量。我有三个不同的脚本,我在同一时间运行大约5个副本,它们读取XML数据和添加信息等。。。然而,当我对脚本进行更改时,我还必须更改其他5个文件,这在一段时间后很烦人。我不能只运行同一个脚本5次,因为每个文件都需要一些不同的参数,我在每个脚本的开头将这些参数作为变量存储在不同的文件路径中 但我肯定有更好的办法 一个很小的例子: script1.py xml.open('c:\file1.xls'
script1.py
xml.open('c:\file1.xls')
while True:
do script...
script2.py
xml.open('c:\file2.xls')
while True:
do exactley the same script...
etc...
您将想了解Python函数和模块 函数是问题的解决方案:它捆绑了一些功能,并允许您调用它来运行它,只需将细微的差异作为参数传递:
def do_something_with_my_sheet(name):
xml.open(name)
while True:
do script...
在脚本的其他地方,您可以调用以下函数:
do_something_with_my_sheet('c:\file1.xls')
现在,如果您想从多个其他脚本中使用相同的函数,可以将该函数放在一个模块中,并从两个脚本中导入它。例如:
这是my_module.py:
这是script1.py:
这可能是script2.py,显示了不同的导入样式:
from my_module import do_something_with_my_sheet
do_something_with_my_sheet('c:\file2.xls')
请注意,上面的示例假定所有内容都放在一个文件夹中,所有脚本都放在一个地方。通过将模块放在一个包中,您可以将内容分开以便于重用,但这超出了本答案的范围-如果您感兴趣,请查看它。您将想了解Python函数和模块 函数是问题的解决方案:它捆绑了一些功能,并允许您调用它来运行它,只需将细微的差异作为参数传递:
def do_something_with_my_sheet(name):
xml.open(name)
while True:
do script...
在脚本的其他地方,您可以调用以下函数:
do_something_with_my_sheet('c:\file1.xls')
现在,如果您想从多个其他脚本中使用相同的函数,可以将该函数放在一个模块中,并从两个脚本中导入它。例如:
这是my_module.py:
这是script1.py:
这可能是script2.py,显示了不同的导入样式:
from my_module import do_something_with_my_sheet
do_something_with_my_sheet('c:\file2.xls')
请注意,上面的示例假定所有内容都放在一个文件夹中,所有脚本都放在一个地方。您可以通过将模块放入包中来分离内容以便于重用,但这超出了本答案的范围-如果您感兴趣,请查看它。您只需要一个脚本,该脚本将文件名作为参数:
import sys
xml.open(sys.argv[1])
while True:
do script...
然后运行脚本。其他变量可以作为附加参数传递,通过sys.argv[2]等访问
如果有许多这样的参数,则可能更容易将它们保存在配置文件中,并将配置文件的名称作为单个参数传递。然后,脚本将解析该文件以获取它所需的所有信息
例如,您可能有一个JSON文件,其内容如下
{
"filename": "c:\file1.xls",
"some_param": 6,
"some_other_param": True
}
你的脚本看起来像
import json
import sys
with open(sys.argv[1]) as f:
config = json.load(f)
xml.open(config['filename'])
while True:
do stuff using config['some_param'] and config['some_other_param']
您只需要一个以文件名为参数的脚本:
import sys
xml.open(sys.argv[1])
while True:
do script...
然后运行脚本。其他变量可以作为附加参数传递,通过sys.argv[2]等访问
如果有许多这样的参数,则可能更容易将它们保存在配置文件中,并将配置文件的名称作为单个参数传递。然后,脚本将解析该文件以获取它所需的所有信息
例如,您可能有一个JSON文件,其内容如下
{
"filename": "c:\file1.xls",
"some_param": 6,
"some_other_param": True
}
你的脚本看起来像
import json
import sys
with open(sys.argv[1]) as f:
config = json.load(f)
xml.open(config['filename'])
while True:
do stuff using config['some_param'] and config['some_other_param']
您是否可以针对每个更改的参数循环使用脚本,压缩为单个文件或使用函数?如果有兴趣,您可以查看configparser,将不同的配置存储在不同的文件中或同一文件的不同部分下。您是否可以针对每个更改的参数循环使用脚本,压缩到单个文件或使用函数?如果感兴趣,您可以查看configparser,将不同的配置存储在不同的文件中或不同部分下的同一文件中。