我有这个 python 脚本:
#!/usr/bin/env python
def getPermutation(s, prefix=''):
if len(s) == 0:
print prefix
for i in range(len(s)):
getPermutation(s[0:i]+s[i+1:len(s)],prefix+s[i] )
getPermutation('abcd','')
但是,我希望能够使用“abcd”的变量来调用这个脚本,这样我就可以插入任何字母组合,而不是像“efgh”这样的“abcd”。
通常,我可以在 bash 脚本的最后一行使用$@
or$1
代替,如下所示:abcd
#!/usr/bin/env python
def getPermutation(s, prefix=''):
if len(s) == 0:
print prefix
for i in range(len(s)):
getPermutation(s[0:i]+s[i+1:len(s)],prefix+s[i] )
getPermutation("$1",'')
./scriptname.py efgh
但是当我使用类似我得到的东西运行脚本时:
$1
1$
而不是“efgh”的排列。
shell的位置参数数组等的python等价
$1
物$2
是sys.argv
所以:
然后
参数化python的很多方法。位置参数、环境变量和命名参数。环境变量:
导入 os 并使用 getenv ,例如:
其中第二个参数是未设置 env 变量的默认值。
位置参数:
导入 sys 后使用 sys.argc、sys.argv[n]。
命名参数:
或者对于命名参数,(你问什么)
然后描述可能的参数:
并将它们用作 args.width 等。
好的,我在写问题时想出了一个解决方法,但我觉得这对其他用户有用,所以就在这里。
对于 python (python2),我们可以使用
raw_input()
代替,$1
但它的工作方式有点不同。不是在 bash 中的脚本名称后输入输入,而是在运行脚本后提示您输入值。这是一个例子:
运行脚本将提示用户“输入字符:”。用户输入字符然后按ENTER后,排列将在终端中打印。
这是源代码,它还解释了如何为 python3 执行此操作。
在命令行上: FileName.py -l abcd