2017-07-03 10 views
0

Je semble avoir quelques problèmes laisser python lire l'événement clé, j'ai écrit ce morceau de code pour l'enregistrement tandis que j'ai l'espace vers le bas et arrêter quand je ' ve libérer ..IOError: [Errno 1] Opération non autorisée: '/ dev/uinput'

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() 

Mais lors de l'exécution de ce code, je reçois ce message d'erreur.

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. 

Et quand je le fais en utilisant 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' 

Alors, pourquoi suis-je reçois ce message d'erreur?

Répondre

1

Vous semblez utiliser le package Python keyboard, dont description est:

Hook and simulate keyboard events on Windows and Linux

Si vous voulez travailler avec des événements de clavier sur MacOS, vous aurez besoin de trouver un paquet qui fait cela.