python - 如何在 Envoy 中使用通配符

标签 python python-envoy

我正在尝试通过 KennethReitz 的 Envoy 包运行此命令:

$ sqlite3 foo.db 'select * from sqlite_master' 

我已经尝试过这个:

r = envoy.run("sqlite3 foo.db 'select * from sqlite_master'")
sqlite3: Error: too many options: "*"

还有这个:

r = envoy.run(['sqlite3', 'foo.db', 'select * from sqlite_master'])
AttributeError: 'NoneType' object has no attribute 'returncode'

额外的引用和转义似乎没有帮助。有什么建议吗?

仅供引用:这是我现在必须做的:

cmd = "sqlite3 %(database)s 'select * from sqlite_master'" % locals()
os.system(cmd)

请注意,这是一个人为的示例,我想要发出的大多数 UNIX shell 命令不仅仅是可以通过 SQLAlchemy 轻松完成的简单选择。

最佳答案

这在 envoy 中不起作用,因为 envoy 会拆分命令并将它们传递给子进程。即使您尝试使用 subprocess.Popen(command, shell = False) ,您最终也会得到 sqlite3 终端。 subprocessenvoy 都无法解决这个问题,如果您可以在 envoy 中提出问题,我会很高兴,因为我正在为此做出贡献,我会思考这个问题。

关于python - 如何在 Envoy 中使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9106350/

相关文章:

python - pyfann中训练数据的格式是什么?

Python:当函数在后台运行时,是否可以创建一个具有动态字符串的 tkinter 标签?

python - 使用整数参数运行脚本

python - 编写一个 Python 函数来计算 Pi

python - 无法清除 wxBoxSizer 的内容

python - grep envoy.run 没有这样的文件或目录

python - 子进程模块、envoy、sarge 和 pexpect 之间的区别?

python - 在特使 : No such file or directory 中使用 rm *(通配符)