Python OSError:[Errno 13]子进程的权限被拒绝。检查\u输出

Python OSError:[Errno 13]子进程的权限被拒绝。检查\u输出,python,Python,我使用文件/sys/class/net/NIC\u NAMES/speed从文件中获取输出。NIC\u NAME部分是变化的,因此它可能是“eth1”或“eth0”等。这里我从Current\u inf中获取该值,因此Current\u inf是一个变量,我希望每次调用它来获取NIC\u NAME值。调用变量以获得输出的正确方法是什么 当通过子进程调用它时。检查输出我正在进入 下面是错误 导入子流程 >>>导入网络面 >>>导入套接字 >>>进口稀土 >>> >>>当前\u inf=netifa

我使用文件
/sys/class/net/NIC\u NAMES/speed
从文件中获取输出。NIC\u NAME部分是变化的,因此它可能是“eth1”或“eth0”等。这里我从Current\u inf中获取该值,因此Current\u inf是一个变量,我希望每次调用它来获取NIC\u NAME值。调用变量以获得输出的正确方法是什么

当通过子进程调用它时。检查输出我正在进入 下面是错误

导入子流程 >>>导入网络面 >>>导入套接字 >>>进口稀土 >>> >>>当前\u inf=netifaces.gateways()['default'][netifaces.AF\u INET][1] >>>打印当前\u inf eth0 >>>spd=子进程。检查\u输出('/sys/class/net/%s/speed'%(当前\u inf)) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“/grid/common/pkgs/python/v2.7.10/lib/python2.7/subprocess.py”,第566行,在check_输出中 进程=Popen(stdout=PIPE,*popenargs,**kwargs) 文件“/grid/common/pkgs/python/v2.7.10/lib/python2.7/subprocess.py”,第710行,在__ 错误读取,错误写入) 文件“/grid/common/pkgs/python/v2.7.10/lib/python2.7/subprocess.py”,第1335行,在执行子进程中 引发子对象异常 OSError:[Errno 13]权限被拒绝 当我从操作系统直接调用它时:

cat/sys/class/net/eth0/速度 2000年

请指导我如何恰当地使用字符串格式,无论是
%
还是
.format
。虽然我使用的是python 2.7.10


第二,作为python的新手,我想了解如何将变量调用到文件配置路径中,就像上面我想调用
Current\u inf
作为变量调用的情况一样


您的输入将非常有用,我们将不胜感激。

无需使用
子流程
模块来读取普通文件。您可以使用:
open('/sys/class/net/%s/speed'%Current\u-inf).read()

>spd=subprocess.check\u输出(['cat','/sys/class/net/{}/speed.format(Current\u-inf)]
可能工作得更好。2.7适用于
.format
,就像
.3.6
适用于
%/code>一样
.format
是首选,因为你不必考虑你的参数是否需要是元组(以及其他原因)。“作为python新手的第二步”:请关注每个问题一个问题。@Evert,thx再次为你的输入,我正在测试它。@Evert,你的解决方案正在工作,我将在向董事会提交问题时考虑到这一点。我只是要求有一个更好的解决方案在手,因为“Eugene”也提出了一个没有子进程的解决方案,所以,如果变量跨千行调用,那么将采用什么方法,它会有延迟,或者换句话说,什么会更快。Eugene Morozov,我只是在结尾添加了
.strip
来减少“\n”字符。尤金,我在我的笔记中添加了
open('/sys/class/net/{}/speed'.format(Current\u-inf)).read().strip()
)它也可以工作,我相信使用它来开发新版本也不会有什么坏处。
>>> 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