TypeError:必须是没有空字节的字符串,而不是os.system()中的str

时间:2016-10-18 06:00:32

标签: python string

我正在尝试编写一个使用以下行执行C可执行文件的python代码

os.system("./a.out \"%s\"" % payload)

其中./a.out是C可执行文件,有效内容是作为命令行参数给出的字符串(不带空格)。 (链接是this。我试图按照章节链接功能下的示例)
现在我已经编写了另一个C代码,但需要3个命令行参数。所以我的字符串应该是arg [1] +“”+ arg [2] +“”+ payloadString。 (c代码将arg [1]和arg [2]转换为整数以在其函数中使用它)。这是我的python代码的片段:

p = "10 "  #arg[1]
p += "10 " #arg[2]
p += "string without spaces which I need as payload" #arg[3]
os.system("./a.out \"%s\"" % p)


其中./a.out是我的C代码的可执行文件,它带有3个命令行参数。当我运行python代码时,我收到错误:

Traceback (most recent call last):
File "this_file.py", line XX, in <module>
os.system("./a.out \"%s\"" % p)
TypeError: must be string without null bytes, not str


任何人都可以帮助我吗?
附:我是python的新手。堆栈溢出中存在类似的问题,但我不确定如何使用他们的答案来解决我的问题。

2 个答案:

答案 0 :(得分:0)

r来电中加os.system

os.system(r"./a.out \"%s\"" % p)

答案 1 :(得分:0)

为什么不为此目的使用电话。我想它会完成这项工作 您可以在列表中提供参数 例如:

Blob

在这种情况下它等同于

POST

我认为这应该有用