在使用argparse传递参数后,如何将python脚本作为批处理作业运行?

时间:2017-05-06 10:20:53

标签: python bash batch-file argparse

我想知道在使用argparse之后是否可以将python脚本作为bash作业运行?我尝试使用argparse首先在python脚本文件中传递一个参数然后使用命令:

bash bash1.sh 

运行将运行python脚本文件的bash文件。这导致了错误

message_script.py: error: too few arguments 

此错误是由于argparse参数未被识别而导致的。有什么方法可以使用argparse传递参数然后将python脚本作为批处理作业运行?

message_script.py的内容:

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()

bash1.sh的内容:

#!/bin/sh
python message_script.py

1 个答案:

答案 0 :(得分:1)

您需要将参数传递给python脚本。如果你知道你的参数的确切数量,你可以写如:

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

或者所有人:

#!/bin/bash
python message_script.py "$@"