使用Python 3 Idle运行.sh文件

时间:2017-11-14 01:45:10

标签: python python-3.x raspbian

我正在尝试使用python 3运行sh文件。我的.sh文件将在终端上运行。我的操作系统是Raspbian。我尝试了那段代码:

import time
import os
import subprocess

# STEP 1
text='sudo somecode'
savefile=open('step1.sh','w')
savefile.write(text)
savefile.close()
time.sleep(2)

shellscript=subprocess.Popen(['./step1.sh'], stdin=subprocess.PIPE)

但它不起作用......

1 个答案:

答案 0 :(得分:1)

毫无疑问是权限问题。为了能够"直接"执行一个文件(la"点斜杠" - ./yourfile),有问题的文件需要"执行bit"组。尝试使用ls -l查看您刚刚使用脚本创建的文件。我打赌文件有执行位:

$ ls -l ./step.sh
-rw-r--r-- 1 furkan furkan 0 Nov 13 20:51 step.sh

请注意第一列中缺少x。您可以chmod添加执行位:

$ chmod +x ./step.sh
$ ls -l ./step.sh
-rwxr-xr-x 1 furkan furkan 0 Nov 13 20:51 step.sh

设置执行位后,您可以使用"点斜杠"构造

但是,我怀疑你想从你的脚本中执行chmod,所以请告诉你的脚本你要运行的{em>实际程序step.sh,即{{ 1}}:

sh

或者在您的示例的简单情况下,只需直接转到sudo:

shellscript=subprocess.Popen(['sh', './step1.sh'], stdin=subprocess.PIPE)

请注意,如果您是健壮的,我可能会考虑添加一些绝对路径,或者确保设置PATH变量。然而,问题的关键在于误解了可执行文件'装置