[英]TypeError: a bytes-like object is required, not 'str' in python and CSV
[英]Python: subprocess + isql on windows: a bytes-like object is required, not 'str'
这是公司发行的笔记本电脑,我无法在其上安装任何新软件。 不过,我可以将 Python 模块安装到我自己的目录中。 我需要在 Sybase 上运行一些东西,并且有 10 多台服务器。 手动操作非常耗时,因此我正在寻找 Python + 子进程的选项。
我做了一些研究,并提到在 python 中使用子进程模块来运行 isql 命令。 但是,我的版本不起作用。 错误消息是 TypeError: a bytes-like object is required, not 'str'。 此错误消息从“通信”行弹出。
我可以看到我的“isql”已成功连接,因为我可以获得 isql.pid。
我在这里错过了什么?
谢谢
import subprocess
from subprocess import Popen, PIPE
import keyring
from textwrap import dedent
server = "MYDB"
cmd = r"C:\Sybase15\OCS-15_0\bin\isql.exe"
interface = r"C:\Sybase15\ini\sql.ini"
c = keyring.get_credential("db", None)
username = c.username
password = c.password
isql = Popen([cmd, '-I', interface,
'-S', server,
'-U', username,
'-P', password,
'-w', '99999'], stdin=PIPE, stdout=PIPE)
output = isql.communicate("""\
SET NOCOUNT ON
{}
go
""".format("select count(*) from syslogins"))[0]
从communicate()
文档中,
如果流以文本模式打开,则输入必须是字符串。 否则,它必须是字节。
默认情况下,流以二进制格式打开,但您可以通过在Popen()
调用中使用text=True
参数将其更改为文本模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.