我在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
如果有人可以解释如何执行此操作,以及从命令行使任何脚本可执行的格式,我将非常感激。
答案 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
在命令行上。