终端出现语法错误:意外的标记`check_call`

-2 投票
1 回答
518 浏览
提问于 2025-04-18 17:40

我在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'附近出现语法错误

这个怎么解决呢?非常感谢...

1 个回答

0
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 的文档

撰写回答