/ bin / sh:1:语法错误:单词意外-从Python使用os.system()

时间:2018-11-27 09:11:12

标签: python shell subprocess os.system flock

我正在尝试从python执行shell命令。这是命令:

(flock -n 200 || (echo no; exit 1) && (echo yes; cat /home/user/Desktop/instructions.json; >/home/user/Desktop/instructions.json)) 200>>/home/user/Desktop/instructions.json

我尝试了os.system()或subprocess.call();但是我总是有相同的错误:

/bin/sh: 1: Syntax error: word unexpected

我认为问题是由于括号引起的,但我不确定。

感谢cat,我试图读取文件,如果未锁定,则删除其内容,否则仅回显否并退出。

此命令在shell中有效。

2 个答案:

答案 0 :(得分:1)

似乎您正在尝试用Python锁定文件。

在您的情况下,您有两个机会:

  • 您可以使用python函数fcntl.flock()直接锁定文件
  • 您还可以使用简单的脚本sh,在脚本的开头写上#!/bin/sh

答案 1 :(得分:0)

要在外壳中执行来自python ad的命令,请使用shell=true作为参数:

subprocess.call("your command", shell=true)

请参阅this post