1

我有以下代码。

import os, fnmatch, sys
print ("HERE")
def test(arg):
    print ("arg" + arg)

test从命令行运行脚本时,我将如何调用该函数?

4

5 回答 5

3

这个 python 成语也被大量使用:

if __name__ == "__main__":
    # do stuff
    ...

当脚本从控制台运行时,这个 if 子句中的所有内容都将运行。这样您就可以将驱动程序代码放在模块文件等中。

如果您将...上面的内容替换为test("blah blah")您将得到您想要的结果:)

于 2013-03-28T20:22:47.023 回答
2

在 Python 中获取命令行选项的最简单方法是使用sys.argv. 这会以数组的形式为您存储任何命令行选项。

打印参数非常简单。

import sys
print(str(sys.argv))

如果您要在此脚本上运行以下命令行: python test.py arg1 arg2 arg3它将打印['test.py', 'arg1', 'arg2', 'arg3']

您可以使用它来构建调用您的函数。但是,您可能已经注意到我们的输出,它不仅包含您的参数,还包含我们执行的文件的名称。因此,我们需要首先确保用户向我们提供了至少一个参数,除了文件名。

我们使用len来做到这一点。

import sys
if len(sys.argv) > 1:
   print(sys.argv[1])

然后我们可以将它与您的函数一起使用来打印第一个参数。

import sys
def test(arg):
   print ("arg" + arg)
if len(sys.argv) > 1:
   test(sys.argv[1])

如果你想从命令行运行调用函数test,你最好使用类似于OptionParser的东西来解析 args。不过,请记住,它OptionParser已被弃用,您应该考虑改用ArgParse

这是一个使用OptionParserand your 函数的工作示例。

from optparse import OptionParser

# Options/Args
parser = OptionParser()

# Add Options
parser.add_option("-t", "--test", dest="test")

# Parse the Options
(options, args) = parser.parse_args()
usage = "usage: %prog [options] arg"
parser = OptionParser(usage)

print ("HERE")
def test(arg):
    print ("arg: " + arg)

# If the command line for test was specified.
if options.test:
    # Run the test function.
    test(options.test)

当您运行应用程序时,您只需添加-t your-text即可调用您的函数。

例如 python3 test.py -t hello

会输出:

HERE
arg: hello
于 2013-03-28T20:20:24.457 回答
2

Python 中的 def 结构是“定义”的缩写。您编写的代码块定义了测试函数,但没有调用它。在解释器中定义好测试函数后,就可以执行命令了

test('whatever') 

'whatever' 是你想要的任何东西。或者您可以在定义 test 后将该命令放入文件中,然后输入 test.py

于 2013-03-28T20:25:23.787 回答
1

在下面

def test(arg):
    print ("arg" + arg)

test('testing')

然后以与以前相同的方式运行它。要使用用户输入运行它,

uinpt = raw_input("Enter something: ")
test(uinpt)
于 2013-03-28T20:20:53.510 回答
1

这是一个非常简单的示例,没有参数:

def do_hex():
text=raw_input("Enter string to convert to hexadecimal: ")
print "HEX: " + text.encode('hex')

#call the function

do_hex()
于 2013-03-28T20:41:36.680 回答