在这种情况下,我需要在python脚本中调用bash脚本,然后在另一个python脚本中调用bash脚本。
下载-输出-files.py:
#!/usr/bin/env python
import os
import sys
for i in node_path:
cmd="python watcher.py "+i
os.system(cmd) ##calling another python scriptwatcher.py:
#!/usr/bin/env python
import os
import time
if 'finish' in child:
print "finish found"
cmd="./copy_output_file.sh "+node
os.system(cmd) ##Calling shell script herecopy_output_file.sh:
#!/bin/bash
filepath=$1
cp ff /home/likewise-open/TALENTICA-ALL/mayankp/kazoo/$filepath当我运行download-output-files.py时,它调用watcher.py,然后调用copy_output_file.sh,下面是我面临的错误:
mayankp@mayankp:~/kazoo$ python download-output-files.py
finish found
sh: 1: Syntax error: Unterminated quoted string当我在Python中运行相同的命令时,它成功地运行bash脚本。我遗漏了什么?
发布于 2016-04-11 08:56:58
将字符串连接到shell命令通常是不明智的。尝试在您的print(cmd)调用之前插入os.system(cmd),找出您想要运行的确切命令,我想您会注意到问题所在(很可能是文件名中有撇号)。
尝试使用subprocess.call(['python', 'watcher.py', i])代替os.system("python watcher.py "+i),使用subprocess.call(['/copy_output_file.sh', node])代替os.system(cmd="./copy_output_file.sh "+node)。
https://stackoverflow.com/questions/36542654
复制相似问题