我正在尝试通过python程序使bash文件可执行。现在看起来像这样:
p = subprocess.Popen(chmod u+x, bashName)
bashName
是我正在执行的bash文件的名称,并且收到错误消息:
FileNotFoundError:[错误2]没有这样的文件或目录:'chmod u + x / home / ##### / Desktop / music / addSong / bashFileName'
我已经尝试过了,但情况没有改善
subprocess.call('chmod u+x /home/stoplight25/Desktop/music/addSong/'+bashName)
我尝试阅读subprocess
上的文档,但这超出了我的理解范围。有人可以解释如何使用subprocess
使文件可执行。
预期:
结果:
答案 0 :(得分:1)
您必须将参数作为 list 传递,而不是作为字符串,或者python尝试将带有空格和args的整个字符串和所有参数作为可执行文件传递给系统(或使用{{1 }},我不建议这样做。还要检查返回码,以防万一:
shell=True
或者您可以使用纯python来访问文件权限(获取文件当前权限,添加用户执行掩码,应用subprocess.check_call(['chmod','u+x','/home/stoplight25/Desktop/music/addSong/'+bashName])
):
os.chmod
答案 1 :(得分:0)
这应该有效:
import subprocess
command = 'chmod u+x /home/stoplight25/Desktop/music/addSong/' + bashName
process = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
output, error = process.communicate()