我有以下代码。
import os, fnmatch, sys
print ("HERE")
def test(arg):
print ("arg" + arg)
从命令行运行脚本时,如何调用函数test
?
答案 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()