繁体   English   中英

类型错误:需要类似字节的 object,而不是使用子进程 python 的“str”

[英]TypeError: a bytes-like object is required, not 'str' using Subprocess python

早上好。 我正在尝试应用此代码,但收到消息“TypeError:需要类似字节的 object,而不是'str'”。

import subprocess as Popen
import subprocess as sp

prog = sp.Popen(['runas', '/noprofile', '/user:Administrator', 'NeedsAdminPrivilege.exe'],stdin=sp.PIPE)
prog.stdin.write('password')
prog.communicate()

但我收到消息“TypeError:需要类似字节的 object,而不是'str'”。

Traceback (most recent call last):   File "runas.py", line 6, in <module>
    prog.stdin.write(Pswd) TypeError: a bytes-like object is required, not 'str' ser: ssword for domain

我是使用 Python 的新手,我花了几天时间试图解决这个问题。

我已经尝试过 use.encode() 但我不确定如何使用它。 我尝试用变量更改“密码”字符串也没有任何成功。

我非常感谢您的专业知识。

此致,

编辑:

我根据您的建议更正了代码:

    import subprocess as Popen
import subprocess as sp

pswd="P4ssW0rd"
prog = sp.Popen(['runas', '/noprofile', '/user:domain\romanuser', cmd.exe'],stdin=sp.PIPE)
prog.stdin.write(pswd.encode() )
prog.communicate()

现在我收到了:

omanuser: ssword for domain
RUNAS ERROR: Unable to acquire user password

您应该在编写字符串之前对其进行编码。

prog.stdin.write('password'.encode())

将完成这项工作。 如果它是包含字符串的变量,例如Pswd ,则可以使用Pswd.encode()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM