
나는 가지고있다이 파이썬 스크립트:
#!/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"에 대한 순열 대신.
답변1
쉘의 위치 매개변수 array 등에 해당하는 Python은 다음과 같습니다 $1
.$2
sys.argv
그래서:
#!/usr/bin/env python
import sys
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(sys.argv[1],'')
그 다음에
$ ./foo.py abcd
abcd
abdc
acbd
acdb
adbc
adcb
bacd
badc
bcad
bcda
bdac
bdca
cabd
cadb
cbad
cbda
cdab
cdba
dabc
dacb
dbac
dbca
dcab
dcba
답변2
파이썬을 매개변수화하는 방법은 많습니다. 위치 인수, 환경 변수 및 명명된 인수. 환경 변수:
os를 가져오고 다음과 같이 getenv를 사용하십시오.
fw_main_width =os.getenv('FW_MAIN_WIDTH', fw_main_width)
두 번째 매개변수는 env 변수가 설정되지 않은 기본값입니다.
위치 인수:
sys를 가져온 후 sys.argc, sys.argv[n]을 사용하세요.
명명된 매개변수:
또는 명명된 매개변수의 경우(귀하가 요청한 것)
import argparse
그런 다음 가능한 매개변수를 설명합니다.
parser = argparse.ArgumentParser(description = "Project", fromfile_prefix_chars='@')
parser.add_argument("-V", "--version", help="show program version", action="store_true")
parser.add_argument("-W", "--width", help="set main screen width")
read arguments from the command line
args = parser.parse_args()
args.width 등으로 사용하십시오.
답변3
좋아, 질문을 작성하는 동안 해결 방법을 찾았지만 이것이 다른 사용자에게 유용할 것이라고 생각하여 여기에 있습니다.
raw_input()
Python(python2)의 경우 대신 사용할 수 있지만 $1
약간 다르게 작동합니다. Bash에서 스크립트 이름 뒤에 입력을 입력하는 대신 값을 입력하라는 메시지가 표시됩니다.~ 후에스크립트를 실행합니다.
예는 다음과 같습니다.
#!/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(raw_input("enter characters: "),'')
스크립트를 실행하면 사용자에게 "문자를 입력하세요:"라는 메시지가 표시됩니다. 사용자가 문자를 입력한 후 키를 누르면 ENTER순열이 터미널에 인쇄됩니다.
답변4
import itertools, argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-l', '--letters', dest='letters', type=str, help='Letters to iterate over')
options = parser.parse_args()
a = [''.join(i) for i in itertools.permutations(options.letters)]
print(a)
if __name__ == '__main__': main()
명령줄에서: FileName.py -l abcd