2017-05-06 1 views
1

argparse를 사용한 후에 bash 작업으로 파이썬 스크립트를 실행할 수 있는지 궁금합니다. 내가 먼저 argparse를 사용하여 파이썬 스크립트 파일에 인수를 전달하여이 일을 시도하고 내가 명령 사용 :argparse를 사용하여 인수를 전달한 후 어떻게 파이썬 스크립트를 배치 작업으로 실행할 수 있습니까?

bash bash1.sh 

는 파이썬 스크립트 파일을 실행 bash는 파일을 실행합니다. 이는이 오류는 argparse 인수가 인정되지 않은 사실의 결과 오류

message_script.py: error: too few arguments 

결과. argparse를 사용하여 인수를 전달하고 일괄 처리 작업으로 파이썬 스크립트를 실행할 수있는 방법이 있습니까? message_script.py의

내용 : bash1.sh의

import sys 
import random 
import numpy as np 
import argparse 
from PIL import Image 
import matplotlib.pyplot as plt 

#Input of Data File 
#Proprtion Alpha 
parser = argparse.ArgumentParser() 
parser.add_argument("Alpha", help = "proportion of pixels to be embedded in cover image") 
args = parser.parse_args() 
alpha = args.Alpha 
alpha = float(alpha) #args.alpha came back as a string hence needed to be converted to float 

#n is the number of pixels in cover image 
n = 512*512 #since all images in BossBase testbench are 512 by 512 

#Length of message to be embedded in cover image 
length_msg = (alpha * n) 
len_msg = int(length_msg) 

#Generates a random message, a 1D vector consisting of 1s and 0s 
msg = np.random.randint(2, size= len_msg) 

#Save message in text format representing each bit as 0 or 1 on a separate line 
msg_text_file = open("/home/ns3/PycharmProjects/untitled1/msg_file.txt", "w") #Path of Data File 
msg_text_file.write("\n".join(map(lambda x: str(x), msg))) 
msg_text_file .close() 

콘텐츠 :

#!/bin/sh 
python message_script.py 
+0

하면 자세한 내용을 공유시겠습니까 당신이 당신의 인수의 정확한 숫자를 알고 있다면 당신은 같은 떨어지게을 쓸 수 있습니까? 당신은 무엇을 기꺼이 성취합니까? bash1.sh 및 message_script.py의 내용을 공유 할 수 있습니까? – MosheZada

+0

이미 알려진 것으로 판단하면 bash 스크립트는 인수를 넘겨주지 않습니다. bash 스크립트를 게시 할 수 있습니까? –

+0

@MosheZada 방금 message_script.py 및 bash 파일 bash1.sh의 내용을 첨부했습니다. 파이썬 스크립트로 텍스트 파일을 만들었고 bash 파일은 파이썬 스크립트를 실행하여 텍스트 파일을 만듭니다. –

답변

1

당신은 파이썬 스크립트에 인수를 전달할 필요가있다.

#!/bin/bash 
# passing two arguments 
python message_script.py "$1" "$2" 

또는 모두 :

#!/bin/bash 
python message_script.py "[email protected]" 
+0

명령 줄에서이 명령을 전달하면 효과가있었습니다. 내가 파이썬 message_script.py 0.5 않았다하지만 그 후 bash1.sh bash 않았다 그리고 그것은 내게이 오류 준 : 사용법 : message_script.py [-h] 알파 message_script.py : 오류 : 너무 적은 인수 @ 3k- –

+0

@CharlesB 너무 당신은 bash 스크립트에서'python message_script.py 0.5'와 같은 것이 있습니까? –

+0

@CharlesB 당신은 또한 여분의 값을 주조 할 수 있도록'add_argument''type = float'에 키워드 인자를 추가 할 수 있습니다 –

관련 문제