我试图打印出这行代码的输出:
public void onPause() {
permissionCheck = ContextCompat.checkSelfPermission(this,
android.Manifest.permission.ACCESS_FINE_LOCATION);
if (permissionCheck == PackageManager.PERMISSION_GRANTED)
{
PSLocManager.removeUpdates(PSLocListener);
}
super.onPause();
}
但输出是这样的
subprocess.check_output('cmd.exe /K cmd',shell=False)
而不是:
**Microsoft Windows [Version 6.3.9600]\r\n(c) 2013 Microsoft Corporation. All rights reserved.\r\n\r\nC:\\Users\\19leungc8\\Desktop>\r\nC:\\Users\\19leungc8\\Desktop>**
如果需要,我会提供更多信息。
答案 0 :(得分:2)
您无需担心。字符串中的\n
表示字符串中的新行。如果您要打印check_output()
的内容,您会在控制台中看到\n
替换为新行。例如:
>>> my_text = "1234\n\n1234"
>>> my_text
'1234\n\n1234'
# ^ value of `my_text` holds `\n`
# on printing the `my_text`, `\n` is replaced with new line
>>> print(my_text)
1234
1234
在你的情况下,你应该这样做:
my_output = subprocess.check_output(...)
print(my_output)
答案 1 :(得分:1)
正如subprocess.check_output
的文档所述:
默认情况下,此函数将以编码字节的形式返回数据。输出数据的实际编码可能取决于被调用的命令,因此通常需要在应用程序级别处理对文本的解码。
所以你得到的是一个bytes对象,它包含作为编码字节的命令输出。打印对象时可以看到这个;字节文字在打印时和打印b
时在引号前都有repr
:
>>> x = b'foo bar'
>>> print(x)
b'foo bar'
>>> x # basically the same as print(repr(x))
b'foo bar'
为了从中获取正确的字符串,您需要使用bytes.decode()
解码字节对象。请注意,为了将字节解码为字符串,您需要知道数据编码的编码方式。通常,这将是utf-8,在这种情况下,您不需要传递任何参数:
>>> x.decode()
'foo bar'
>>> print(x.decode())
foo bar