我无法在python中运行.sh文件。当我输入.sh文件的位置(/home/pi/file/script.sh)时,脚本会完美运行。
我正在尝试在python2脚本中运行此脚本,并且已完成以下方法:
subprocess.Popen(['bash', 'location of .sh'])
subprocess.call(['location of .sh'])
os.popen(['location of .sh'])
运行python脚本时,我从rclone收到提示,提示“命令同步最多需要2个参数”
我的.sh文件仅包含:
#!/bin/sh
sudo /usr/local/bin/rclone -v sync /home/pi/some_project_data remote:rclone --delete-before --include *.csv --include *.py
我不确定在终端上运行.sh文件的工作方式如何,但是当我尝试使用Python运行.sh文件时会弹出此错误。
答案 0 :(得分:1)
无论何时在包含2个或更多.csv
或.py
文件的目录中运行脚本,脚本都会失败。对于终端以及通过Python都是如此。
为避免这种情况,请引用您的模式,以便shell不会扩展它们:
#!/bin/sh
sudo /usr/local/bin/rclone -v sync /home/pi/some_project_data remote:rclone \
--delete-before --include "*.csv" --include "*.py"
答案 1 :(得分:0)
请尝试:
os.popen('bash locationof.sh')
例如:
os.popen('bash /home/script.sh')
那在我的机器上工作了。如果您在字符串周围放置方括号,则python会假定它是一个列表,而popen不接受列表,它将接受一个字符串。
如果脚本不起作用,则无法解决该问题,但至少可以运行它。如果仍然无法正常运行,请尝试使用
之类的脚本运行脚本touch z.txt
,然后查看z.txt是否出现在文件浏览器中。如果是这样,则您的.sh文件有问题。