【问题标题】:Python script output argument templatePython 脚本输出参数模板
【发布时间】:2012-09-26 03:23:09
【问题描述】:

我正在编写一个基本的 Python 脚本,它最终会生成一个字符串,用于在 Linux 命令行上调用其他脚本。

例如:

inputFile = "loadsOfData.csv"
outputFile = "results.txt"
doThis = "-p"
doThat = '-a"


scriptCommand = "./myscript" + " " + inputFile + " " + outputFile + " " + doThis + " " + doThat

os.system(scriptCommand)

命令行参数的顺序将来可能会改变,我想检查一下生成了什么。

在 Python 中是否有某种方法可以指定模板,以便轻松更改参数的格式并确保准确性?

真实的例子有比这更多的参数,所以我很高兴能够使用可以在脚本顶部编辑的一些模板来指定顺序,而不是在 scriptCommand = 中复制粘贴所有内容。 ...如果它确实改变了。

附:实际的 args 来自其他地方,包括 argv,因此不像我的示例中那样硬编码。

【问题讨论】:

  • 您应该使用subprocess 模块,它旨在替换os.system。它接受带有命令及其参数的列表:您可以动态构建该列表,然后将其传递给适当的subprocess 函数。

标签: linux python-2.7


【解决方案1】:

你应该使用 python string formatting。在文件顶部定义要使用的格式,如下所示:

commandFormat = "./myscript {0} {1} {2} {3}"
inputFile = "loadsOfData.csv"
outputFile = "results.txt"
doThis = "-p"
doThat = "-a"
scriptCommand = commandFormat.format(inputFile, outputFile, doThis, doThat)
print scriptCommand

>>> './myscript loadsOfData.csv results.txt -p -a'

如果你需要,比如说,在你的所有 scriptCommand 中让 -a 出现在 -p 之前,请更改数字顺序 在像这样commandFormat = "./myscript {0} {1} {3} {2}" 这样的commandFormat 变量中,输出将变为:

>>> './myscript loadsOfData.csv results.txt -a -p'

【讨论】:

    猜你喜欢
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多