我正在尝试从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然后删除其内容,如果它没有被锁定,否则只是echo no并退出 .
此命令在shell中有效 .
2 回答
要从python ad执行命令,它将在shell中使用
shell=true
作为参数:见this post
看来你正试图用Python锁定文件 .
在您的情况下,您有两个机会:
您可以使用python函数fcntl.flock()直接锁定文件
您也可以使用一个简单的脚本sh,在其中编写
#!/bin/sh
,在开头