使我的for循环可执行

时间:2011-01-23 16:13:36

标签: python for-loop executable command-line-arguments

我在Python中创建了这个for循环:

a = 'word'

for i in range(len(a)):

 print a[i:] + a[:i], (a[i:] + a[:i])[::-1]

我需要从命令行使它可执行,并且还能够接受新的参数。

我对如何做到这一点有点朦胧。我知道你需要使用

if __name__ == '__main__':

不知怎的......我需要使用sys.argv

如果有人可以解释如何执行此操作,以及从命令行使任何脚本可执行的格式,我将非常感激。

3 个答案:

答案 0 :(得分:2)

你可以简单地写

import sys
a = sys.argv[1]
etc..

然后运行:

python yourcode.py argument

if __name__=='__main__':

不是必需的,但您也可以将整个代码置于其中。它的目的是指定只有在运行程序时执行的代码,如“python yourcode.py”,并且如果在另一个.py文件中编写“import yourcode”,则防止if语句下的代码被执行。

答案 1 :(得分:2)

根据您希望拥有Python脚本的灵活性,我会像这样构建脚本:

def get_args():
    # logic for parsing arguments here
    # return e.g. a dictionary

def your_method(arg1=None,arg2=...):
    # further logic

if __name__ == "__main__":
    args = get_args()
    your_method(**args)

有各种模块可以解析命令行参数。请查看argparse(更简单)和optparse

如果您只需要一种简单的方法来访问命令行参数,则可以使用sys.argv

通过这种分离,您还可以将您的功能导入其他代码。

示例:

import sys

def get_args():
    word = sys.argv[1] if (len(sys.argv) > 1) else ''
    return {"word": word}

def your_method(word=''):
    for i in range(len(word)):
        print word[i:] + word[:i], (word[i:] + word[:i])[::-1]

if __name__ == "__main__":
    args = get_args()
    your_method(**args)

并使用

运行它
python yourscript.py someword

另见:

答案 2 :(得分:0)

import sys
if __name__ == '__main__':
    a = sys.argv[1] #sys.argv[0] is your file name, and [1] is the next argument
    for i in range(len(a)):
        print a[i:] + a[:i], (a[i:] + a[:i])[::-1]

然后您只需更改到包含该文件的目录,并将其命名为:

python file.py wordHere

在命令行上。