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

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

早上好。我正在尝试应用此代码,但收到消息“TypeError:需要类似字节的对象,而不是 '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:需要类似字节的对象,而不是 '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 的新手,花了好几天时间尝试解决这个问题。

我已经尝试使用 .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()