【发布时间】:2013-05-13 00:40:41
【问题描述】:
研究在底部,在-1'ing之前阅读...谢谢。
我必须编写一个运行 SQL 查询的 Python 脚本。我做了一个主类并调用 SQLQuery。每个 SQLQuery 实例代表一个查询。脚本的结构必须如下:
class SQLQuery(object):
def __init___(self, string_myQuery)...
instance1 = SQLQuery(SQLQuery1)...
instance2 = SQLQuery(SQLQuery2)...
作为用户要求,实例必须与类在同一个文件中(所以我不能只将每个实例设为主文件并单独执行该文件),并且每个实例 必须使用 Linux 控制台命令执行。我可以使用简单的 python SQLQuery.py 执行整个脚本,但我需要分别执行每个实例。查询将每天自动执行,因此我不需要终端 UI 树。它应该使用类似这样的命令来执行:
python SQLQuery.py -inst1
将执行instance1。
python SQLQuery.py -inst2
将执行instance2。
我研究了如何使用 Linux 命令执行 Python 脚本,大部分文章都是关于从 Python 脚本调用命令的。但是,我从 Python 文档中找到了this article。它建议添加 -m,所以:
python SQLQuery.py -m inst1
这可以让我使用控制台命令设置我的 main,但它不起作用,因为实例不是模块。而且由于实例必须与类在同一个文件中,所以当我使用控制台命令执行 SQLQuery.py 时,我不能将它们作为模块导入。
【问题讨论】:
-
为什么不直接向脚本传递一个命令行参数,告诉它运行哪个实例?
-
您提出的结构毫无意义。
SQLQuery将自己作为基类,并将自己作为__init__参数?另外,MainClass和SQLQuery1是什么? -
另外,该文档建议在哪里添加
-m?它描述了-m如何作为python本身的参数工作,这意味着按名称查找和执行模块;这并不意味着-m应该作为脚本参数的任何含义。 -
签出docs.python.org/2/library/argparse.html,构建命令行界面
-
martineau,这就是我想要做的。你已经描述了我的问题。 abarnert,这无关紧要。
标签: python linux command-line scripting command-line-arguments