【问题标题】:syntax error near unexpected token `check_call' . Syntax error in terminal意外标记 `check_call' 附近的语法错误。终端中的语法错误
【发布时间】:2014-08-18 16:05:41
【问题描述】:

我正在尝试在 Mac 终端中输入此命令

#!/usr/bin/env python

from sys import argv
from subprocess import check_call
from os.path import basename, dirname, splitext, join
from tempfile import NamedTemporaryFile

app = argv[-1]
ldid_path = join(dirname(__file__), 'ldid')
obj_path = join(app, splitext(basename(app))[0])

if '-gta' not in argv:
    check_call([ldid_path, '-S', obj_path])
else:
    with NamedTemporaryFile('w+b', 0) as f:
        f.write("""
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>get-task-allow</key>
    <true/>
  </dict>
</plist>
        """)
        f.flush()
        check_call([ldid_path, '-S' + f.name, obj_path])

但我得到了一个错误:

iMac-Oleg:ldid olegmelnik$ f.flush()

check_call([ldid_path, '-S' + f.name, obj_path]) -bash:意外标记“check_call”附近的语法错误

如何解决这个问题?非常感谢...

【问题讨论】:

  • 这不是“命令”。那是一个python脚本。您不能在终端提示符下逐行输入。
  • 但是你会看到from是文件前面的无效命令方式的错误。
  • @EtanReisner 我需要做什么?
  • @tripleee 是的,我自己对此感到惊讶,尽管我主要认为他们只是早些时候被忽略了。
  • @olezko46 将该代码放入文件something.py,然后通过python 运行该文件:python something.py。显然,您可以为文件使用任何您想要的名称。

标签: python macos terminal


【解决方案1】:
in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/Users/olegmelnik/Desktop/ldid', '-S', '/Users/olegmelnik/Desktop/ldid3.py/ldid3']' returned non-zero exit status 1

这就是check_call 所做的。如果您不希望这样,请不要使用check_call。请参阅subprocess documentation 了解更多信息。

【讨论】:

    猜你喜欢
    • 2012-08-31
    • 2012-10-20
    • 2012-09-29
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    相关资源
    最近更新 更多