这是我的第一个问题,任何反馈都会令人惊讶。
我从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''实际上并不是字符串的一部分。
干杯!
答案 0 :(得分:1)
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'))