Python从外部C程序调用输出带换行符的字符串

时间:2017-05-16 03:46:43

标签: python c string

这是我的第一个问题,任何反馈都会令人惊讶。

我从Python3调用C程序和我的变量捕获的字符串 打印出换行符而不是处理换行符。

想要这个: 你好 世界

我得到: B'你好\ nworld'

我有这个名为find.c的程序:

    int main(int argc, char *argv[]){

        printf("%s:\n%s\n\n",argv[1],argv[2]);
        return 0;
    }

Python3执行/ Ran /处理:

    import sys
    import subprocess

    user = sys.argv[1]
    item = sys.argv[2]

    out = subprocess.check_output(["./find", user, item])
    print(out)

再一次,字符串" out"包含" \ n"而不是像对待它一样 一条新线。

我尝试过添加:universal_newlines = True和end ="" check_out()没有运气。

我尝试过使用Popen()并调用(),他们仍然保持" \ n"。

作为最后一点:我将此字符串输出到html中的textarea。是的,我知道b''实际上并不是字符串的一部分。

干杯!

3 个答案:

答案 0 :(得分:1)

EHHHH,我明白了。对于任何有兴趣的人,我都做了以下事情:

    print(subprocess.check_output(["./find",user,item],universal_newlines=True))

我实际上并没有尝试使用universal_newlines = True。

看看我的第一个接受的答案!

答案 1 :(得分:0)

你需要去掉回车和换行。

import sys
import subprocess

user = sys.argv[1]
item = sys.argv[2]

out = check_output(["./find", user, item]).strip()
print(out)

答案 2 :(得分:0)

试试这个。 subprocess返回一个字节字符串,你想把它打印成ascii字符。

print(out.decode('ascii'))