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