使用命令args调用函数

时间:2013-03-28 20:18:55

标签: python

我有以下代码。

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

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

5 个答案:

答案 0 :(得分:3)

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

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

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

如果您将上面的...替换为test("blah blah"),您将获得所需的结果:)

答案 1 :(得分: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

这是使用OptionParser和您的函数的工作示例。

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即可调用您的函数。

e.g。 python3 test.py -t hello

输出:

HERE
arg: hello

答案 2 :(得分:2)

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

test('whatever') 

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

答案 3 :(得分:1)

下的

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

test('testing')

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

uinpt = raw_input("Enter something: ")
test(uinpt)

答案 4 :(得分:1)

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

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

#call the function

do_hex()