Python 我应该如何组织基本相同的脚本?

Python 我应该如何组织基本相同的脚本?,python,Python,所以我是Python新手,我需要一些帮助来改善我的生活。我学习Python是为了工作,需要稍微减少工作量。我有三个不同的脚本,我在同一时间运行大约5个副本,它们读取XML数据和添加信息等。。。然而,当我对脚本进行更改时,我还必须更改其他5个文件,这在一段时间后很烦人。我不能只运行同一个脚本5次,因为每个文件都需要一些不同的参数,我在每个脚本的开头将这些参数作为变量存储在不同的文件路径中 但我肯定有更好的办法 一个很小的例子: script1.py xml.open('c:\file1.xls'

所以我是Python新手,我需要一些帮助来改善我的生活。我学习Python是为了工作,需要稍微减少工作量。我有三个不同的脚本,我在同一时间运行大约5个副本,它们读取XML数据和添加信息等。。。然而,当我对脚本进行更改时,我还必须更改其他5个文件,这在一段时间后很烦人。我不能只运行同一个脚本5次,因为每个文件都需要一些不同的参数,我在每个脚本的开头将这些参数作为变量存储在不同的文件路径中

但我肯定有更好的办法

一个很小的例子:

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,将不同的配置存储在不同的文件中或不同部分下的同一文件中。