/ bin / sh: 1: синтаксическая ошибка: слово неожиданное - использование os.system () из Python - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь выполнить команду оболочки из python.Вот команда:

(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 и выйдите.

Эта команда работает в оболочке.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Кажется, вы пытаетесь заблокировать файл в Python.

В вашем случае у вас есть две возможности:

  • Вы можете использовать функцию python fcntl.flock () длянапрямую заблокировать файл
  • Вы также можете использовать простой скрипт sh, в котором вы пишете #!/bin/sh, в начале
0 голосов
/ 27 ноября 2018

Чтобы выполнить команду из python ad в командной оболочке, используйте shell=true в качестве аргумента:

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

см. это сообщение

...