我正在使用文件/sys/class/net/NIC_NAMES/speed
来获取文件的输出。 NIC_NAMES 部分不同,因此可能是" eth1"或" eth0"在这里,我从 Current_inf 获得该值,因此Current_inf是一个变量,我希望每次调用以获得 NIC_NAME 值。什么是正确的方法来调用变量来获得输出。
通过 subprocess.check_output 调用它时我会进入 低于错误。
>>> import subprocess
>>> import netifaces
>>> import socket
>>> import re
>>>
>>> Current_inf = netifaces.gateways()['default'][netifaces.AF_INET][1]
>>> print Current_inf
eth0
>>> spd = subprocess.check_output('/sys/class/net/%s/speed' % (Current_inf))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/grid/common/pkgs/python/v2.7.10/lib/python2.7/subprocess.py", line 566, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/grid/common/pkgs/python/v2.7.10/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/grid/common/pkgs/python/v2.7.10/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied
当我从操作系统直接调用它时:
2000
请指导我如何使用字符串格式,%
或.format
。虽然我使用的是python 2.7.10。
其次作为python的新手,我想了解如何将变量调用到文件配置路径中就像我上面的情况一样,我想调用Current_inf
作为变量调用
您的意见将非常有用和赞赏。
答案 0 :(得分:0)
无需使用subprocess
模块来读取普通文件。您可以使用:open('/sys/class/net/%s/speed' % Current_inf).read()