小编J D*_* Do的帖子

在遍历和提取​​树的节点时遇到问题?

我将以下树(tree_1tree_2tree_3)存储在字典(dict_1dict_2dict_3)中。如何递归遍历树的所有路径,收集从根到每个分支的最后一个节点的所有节点?

换句话说,我想为所有树分支(字典)生成所有可能的节点序列列表。例如,dict_1tree_1)的一些可能分支是:

[["FunctionDef", "try", "ExceptHandler", "Expr", "Call", "Attribute","Load"],
["FunctionDef", "try", "ExceptHandler", "Expr", "Call", "Attribute","save_dictionary"],
["FunctionDef", "try", "ExceptHandler", "Expr", "Call", "Attribute","Name", "self"],
..., 
["FunctionDef", "arguments", "arg", "self"]]
Run Code Online (Sandbox Code Playgroud)

到目前为止,从上一个问题开始,我尝试:

def foo(nested_dict, c = []):
   for i in ['left', 'op', 'right', 'func', 'value', 'args', 'ctx',
             'body', 'comparators', 'ops', 'test', 'orelse', 'targets', 'slice', 'n', 'id', '_type']:
      if i in nested_dict:
        if isinstance(nested_dict[i], list):
            for b in nested_dict[i]: …
Run Code Online (Sandbox Code Playgroud)

python recursion dictionary data-structures python-3.x

5
推荐指数
1
解决办法
79
查看次数

如何在用户每次按下按键时录制音频?

当且仅当用户按下 ctrl 键时如何不确定地录制用户的音频并在用户按下 ctrl+c 键时关闭录制循环?到目前为止,基于一些在线示例构建了这个脚本:

from pynput import keyboard
import time, os
import pyaudio
import wave
import sched
import sys
from playsound import playsound


CHUNK = 8192
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
WAVE_OUTPUT_FILENAME = "mic.wav"

p = pyaudio.PyAudio()
frames = []

def callback(in_data, frame_count, time_info, status):
    frames.append(in_data)
    return (in_data, pyaudio.paContinue)

class MyListener(keyboard.Listener):
    def __init__(self):
        super(MyListener, self).__init__(self.on_press, self.on_release)
        self.key_pressed = None
        self.wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
        self.wf.setnchannels(CHANNELS)
        self.wf.setsampwidth(p.get_sample_size(FORMAT))
        self.wf.setframerate(RATE)
    def on_press(self, key):

        try:
            if key.ctrl:
                self.key_pressed = …
Run Code Online (Sandbox Code Playgroud)

python input pyaudio python-3.x

3
推荐指数
1
解决办法
2672
查看次数