我有一个Perl脚本,我从中调用Python脚本。
我正在使用:
system "python script.py '".$var1."' '".$var2."' '".$var3."' '".$var4."' '".$var5."'";
其中,$var1 = "'Nostoc azollae' 0708"
,在字符串中有单引号。
在script.py
脚本中,我正在使用:
var1 = sys.argv[1]
如果我打印var1
,它只打印:Nostoc
,其余部分不打印,其余部分正常工作。
因此,很明显Python脚本没有收到包含'
的字符串。
什么可以解决这个问题?
答案 0 :(得分:3)
通过使用单独的参数而不是将它们全部连接在一起使用system()
时避免shell调用,
system("python", "script.py", $var1, $var2, $var3, $var4, $var5);