Python:将参数用作变量

时间:2015-11-09 01:04:24

标签: python

我想使用参数,然后将其转换为包含值的变量:

我从CSV文件中获取了一些值,然后将其上传到Googles的工作表文档。

以下是我的代码[mycode.py]的摘要:

f101 = open('/home/some_directory/101_Hrs.csv')
f102 = open('/home/some_directory/102_Hrs.csv')
f103 = open('/home/some_directory/103_Hrs.csv')
f112 = open('/home/some_directory/112_Hrs.csv')

csv_f101 = csv.reader(f101)
csv_f102 = csv.reader(f102)
csv_f103 = csv.reader(f103)
csv_f112 = csv.reader(f112)

我想使用终端中的参数(101,102,103或112)(例如mycode.py 101),我可以使用[101]与f连接获取f101以及open('/home/some_directory/[101]_Hrs.csv'),其中[101]是一个可以被终端中的参数替换的数字。

这是怎么做到的?

2 个答案:

答案 0 :(得分:1)

在python程序中使用输入参数的几个简单教程:

基本想法是使用内置的sys模块,该模块允许您通过argv访问输入。

import sys

nInputs = len(sys.argv)

print 'Number of arguments = ', nInputs
print 'Inputs = ', str(sys.argv)

if (nInputs >= 2):
    strFilename = '/home/some_directory/' + sys.argv[1] + '_Hrs.csv'
    print 'Filename = ', strFilename

然后当你跑:

>> python mycode.py 101
Number of arguments = 2
Inputs = ['mycode.py', '101']
Filename = /home/some_directory/101_Hrs.csv

答案 1 :(得分:0)

结帐argparse,其功能超过sys.argv。您不一定需要所有这些都符合您当前的要求,但它更灵活,可以避免一些重新发明:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('arguments', nargs='+')
args = parser.parse_args()
print('number of supplied arguments:{}'.format(len(args.arguments)))
for argument in args.arguments:
    print('supplied argument:{}'.format(argument))

它还有一个由频繁的Stack Overflow撰稿人编写的优秀教程:https://docs.python.org/2/howto/argparse.html