Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos IOError:[Errno 1]不允许操作:'/dev/uinput';_Macos_Python 2.7_Keyboard_Keyevent_Pyaudio - Fatal编程技术网

Macos IOError:[Errno 1]不允许操作:'/dev/uinput';

Macos IOError:[Errno 1]不允许操作:'/dev/uinput';,macos,python-2.7,keyboard,keyevent,pyaudio,Macos,Python 2.7,Keyboard,Keyevent,Pyaudio,我似乎有一些问题让python读取关键事件,我写了这段代码 当我有空间的时候录音,当我释放它时停止 import pyaudio import wave import keyboard CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 2 RATE = 44100 RECORD_SECONDS = 5 WAVE_OUTPUT_FILENAME = "output.wav" p = pyaudio.PyAudio() stream = p.op

我似乎有一些问题让python读取关键事件,我写了这段代码 当我有空间的时候录音,当我释放它时停止

import pyaudio
import wave
import keyboard

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"

p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

print("* recording")

frames = []

while keyboard.is_pressed('space'):
    data = stream.read(CHUNK)
    frames.append(data)

print("* done recording")

stream.stop_stream()
stream.close()
p.terminate()

wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
但是当运行这个代码时,我得到了这个错误消息

python sound_record.py 
* recording
Traceback (most recent call last):
  File "sound_record.py", line 24, in <module>
    while keyboard.is_pressed('space'):
  File "/usr/local/lib/python2.7/site-packages/keyboard/__init__.py", line 162, in is_pressed
    _listener.start_if_necessary()
  File "/usr/local/lib/python2.7/site-packages/keyboard/_generic.py", line 36, in start_if_necessary
    self.init()
  File "/usr/local/lib/python2.7/site-packages/keyboard/__init__.py", line 112, in init
    _os_keyboard.init()
  File "/usr/local/lib/python2.7/site-packages/keyboard/_nixkeyboard.py", line 110, in init
    build_device()
  File "/usr/local/lib/python2.7/site-packages/keyboard/_nixkeyboard.py", line 106, in build_device
    ensure_root()
  File "/usr/local/lib/python2.7/site-packages/keyboard/_nixcommon.py", line 163, in ensure_root
    raise ImportError('You must be root to use this library on linux.')
ImportError: You must be root to use this library on linux.
python sound\u record.py
*录音
回溯(最近一次呼叫最后一次):
文件“sound_record.py”,第24行,在
按下键盘时('空格'):
文件“/usr/local/lib/python2.7/site packages/keyboard/_init__.py”,第162行,按
_listener.start\u如果需要()
文件“/usr/local/lib/python2.7/site packages/keyboard/_generic.py”,第36行,如有必要,在start_中
self.init()
文件“/usr/local/lib/python2.7/site packages/keyboard/_init__.py”,第112行,在init中
_os_keyboard.init()
文件“/usr/local/lib/python2.7/site packages/keyboard/_nixkeyboard.py”,第110行,在init中
构建设备()
文件“/usr/local/lib/python2.7/site packages/keyboard/\u nixkeyboard.py”,第106行,内置设备
确保_root()
文件“/usr/local/lib/python2.7/site packages/keyboard/\u nixcommon.py”,第163行,在根目录中
raise ImportError('您必须是root才能在linux上使用此库。“)
ImportError:您必须是root才能在linux上使用此库。
当我使用sudo时:

sudo !!
sudo python sound_record.py 
Password:
* recording
Traceback (most recent call last):
  File "sound_record.py", line 24, in <module>
    while keyboard.is_pressed('space'):
  File "/usr/local/lib/python2.7/site-packages/keyboard/__init__.py", line 162, in is_pressed
    _listener.start_if_necessary()
  File "/usr/local/lib/python2.7/site-packages/keyboard/_generic.py", line 36, in start_if_necessary
    self.init()
  File "/usr/local/lib/python2.7/site-packages/keyboard/__init__.py", line 112, in init
    _os_keyboard.init()
  File "/usr/local/lib/python2.7/site-packages/keyboard/_nixkeyboard.py", line 110, in init
    build_device()
  File "/usr/local/lib/python2.7/site-packages/keyboard/_nixkeyboard.py", line 107, in build_device
    device = aggregate_devices('kbd')
  File "/usr/local/lib/python2.7/site-packages/keyboard/_nixcommon.py", line 141, in aggregate_devices
    uinput = make_uinput()
  File "/usr/local/lib/python2.7/site-packages/keyboard/_nixcommon.py", line 27, in make_uinput
    uinput = open("/dev/uinput", 'wb')
IOError: [Errno 1] Operation not permitted: '/dev/uinput'
sudo!!
sudo python sound_record.py
密码:
*录音
回溯(最近一次呼叫最后一次):
文件“sound_record.py”,第24行,在
按下键盘时('空格'):
文件“/usr/local/lib/python2.7/site packages/keyboard/_init__.py”,第162行,按
_listener.start\u如果需要()
文件“/usr/local/lib/python2.7/site packages/keyboard/_generic.py”,第36行,如有必要,在start_中
self.init()
文件“/usr/local/lib/python2.7/site packages/keyboard/_init__.py”,第112行,在init中
_os_keyboard.init()
文件“/usr/local/lib/python2.7/site packages/keyboard/_nixkeyboard.py”,第110行,在init中
构建设备()
文件“/usr/local/lib/python2.7/site packages/keyboard/\u nixkeyboard.py”,第107行,内置设备
设备=聚合设备(kbd)
文件“/usr/local/lib/python2.7/site-packages/keyboard/_-nixcommon.py”,第141行,在聚合设备中
uinput=make_uinput()
文件“/usr/local/lib/python2.7/site packages/keyboard/_nixcommon.py”,第27行,make_uinput
uinput=open(“/dev/uinput”,“wb”)
IOError:[Errno 1]不允许操作:'/dev/uinput'

那么为什么我会收到这个错误消息呢

您似乎正在使用Python软件包
键盘
,它是:

在Windows和Linux上钩住并模拟键盘事件

如果你想在MacOS上处理键盘事件,你需要找到一个可以这样做的软件包