我一直在写一些 python 代码,在我的代码中我使用了“命令”
该代码按我的预期工作,但后来我在 Python 文档中注意到该命令已被弃用,并将在 Python 3 中删除,我应该改用“子进程”。
“好吧”我想,“我不希望我的代码直接进入遗留状态,所以我现在应该改变它。
问题是 subprocess.Popen 似乎在任何输出的开头添加了一个讨厌的字符串,例如
<subprocess.Popen object at 0xb7394c8c>
Run Code Online (Sandbox Code Playgroud)
我看到的所有例子都在那里,它似乎被接受,因为它总是在那里。
这段代码;
#!/usr/bin/python
import subprocess
output = subprocess.Popen("ls -al", shell=True)
print output
Run Code Online (Sandbox Code Playgroud)
产生这个;
<subprocess.Popen object at 0xb734b26c>
brettg@underworld:~/dev$ total 52
drwxr-xr-x 3 brettg brettg 4096 2011-05-27 12:38 .
drwxr-xr-x 21 brettg brettg 4096 2011-05-24 17:40 ..
<trunc>
Run Code Online (Sandbox Code Playgroud)
这是正常的吗?如果我将它用作将各种格式化详细信息输出到控制台的较大程序的一部分,它会将一切搞砸。
我正在使用该命令通过使用 ifconfig 以及各种 grep 和 awks 来获取接口的 IP 地址来抓取地址。
考虑这个代码;
#!/usr/bin/python
import commands,subprocess
def new_get_ip (netif):
address = subprocess.Popen("/sbin/ifconfig " + netif + " | …Run Code Online (Sandbox Code Playgroud)