使用命令行中的输入参数运行Python函数

时间:2016-08-17 10:05:57

标签: python function input command-line arguments

Python新手,曾经使用过MATLAB。

我的函数convert.py是:

def local_variable_defined?(name, binding)
  binding.local_variable_defined?(name)
end

local_variable_defined?(:a, binding)
# => false

a = 42 if false

local_variable_defined?(:a, binding)
# => true

a
# => nil

如何使用输入参数'a'和'b'从命令行运行它? 我试过了:

def convert(a,b)
  factor = 2194.2
  return (a-b)*factor

但是错了。

我确实试图在网上找到答案,找到相关的东西但不是答案:

  1. Command Line Arguments In Python(Stack Overflow)
  2. http://www.cyberciti.biz/faq/python-command-line-arguments-argv-example/(Stack Overflow)
  3. http://www.saltycrane.com/blog/2007/12/how-to-pass-command-line-arguments-to/
  4. https://developers.facebook.com/docs/ios/getting-started
  5. 另外,我在哪里可以找到自己的答案,以便我可以在这个论坛中保存更多非平凡的问题?

2 个答案:

答案 0 :(得分:0)

你可以这样做:

import sys
def convert(a,b):
    factor = 2194.2
    return (a-b)*factor
print(convert(int(sys.argv[1]), int(sys.argv[2])))

如果这就是脚本的全部内容,则不必定义函数:

import sys
factor = 2194.2
print((int(sys.argv[1]), int(sys.argv[2])*factor)

如果你想改变你的文件(尽管你必须在函数定义后添加冒号),你可以按照你的第一个链接方法:

python -c 'import convert, sys; print convert.convert(int(sys.argv[1]), int(sys.argv[2])'

答案 1 :(得分:-1)

对于这种称为argparse的东西,存在一个Python模块,它允许你在命令行标志周围做一些非常奇特的事情。你真的不需要 - 你只需要在命令行上输入两个数字。这可以非常天真地处理。

Python允许您通过名为sys.argv的数组直接访问命令行参数 - 您首先需要import sys。此数组中的第一个元素始终是程序名称,但第二个和第三个元素将是您在i.e. sys.argv[1]sys.argv[2]中传递的数字。有关更完整的示例:

if len(sys.argv) < 3:
    print 'Didnt supply to numbers'
a = int(sys.argv[1])
b = int(sys.argv[2])

当然,您需要进行一些错误检查,确保它们是整数/浮点数。

如果您对here

感兴趣,可以在sys.argv周围进行一些额外的阅读

要完成,我们也可以给出一个argparse示例:

import argparse

parser = argparse.ArgumentParser(description='')
parser.add_argument('numbers', type=float, nargs=2,
                            help='Things to perform actions on')
args = parser.parse_args()

a = args.numbers[0]
b = args.numbers[1]

print a, b