首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >alsamixer amixer到python字典格式

alsamixer amixer到python字典格式
EN

Stack Overflow用户
提问于 2015-08-11 07:50:54
回答 1查看 265关注 0票数 2

alsamixer使用以下语法将其数据存储在文件中:

代码语言:javascript
复制
control.2 = {
    iface : MIXER
    name : 'DSP1 Rate'
    value:'16kHz'
    comment = {
        access 'read write'
        type ENUMERATED
        count 1
        item.0 'SYNCCLK rate'
        item.1 '8kHz'
        item.2 '16kHz'
        item.3 'ASYNCCLK rate'
    }

有没有一种将其转换为python字典的快速方法?允许从python脚本中读取它?

我尝试过使用pyalsaaudioalsaaudio.mixers()一起查看控件的名称,但是使用alsa文件,您还可以看到可以为该控件设置的可用数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-11 15:16:46

我整个下午都在做这个。希望它能解决你的问题:

代码语言:javascript
复制
#!/usr/bin/env python2.7
import re
import json


def jsonify(config='/var/lib/alsa/asound.state'):
    g = re.MULTILINE
    p1 = re.compile(r'((?:^|"[^"]+"|\'[^\']+\'|[\s:{}])+)([^\s{}]+)', g)
    p2 = re.compile(r'^(\s*\"[\w.]+"(?!\s*[\:]))', g)
    p3 = re.compile(r'([\"\}])\n(?!\s*\})', g)

    with open(config) as fh:
        context = fh.read()
        # replace all the quote with quotes
        context = context.replace("'", '"')
        # surround the name:value objects by quotes
        context = re.sub(p1, r'\g<1>"\g<2>"', context)
        # add a trailing comma after the values assignment
        context = re.sub(p2, r'\g<1>:', context)
        # add a colon before the values as a delimiter
        context = re.sub(p3, r'\g<1>,\n', context)

    return json.loads('{\n%s\n}' % context[:-2])


if __name__ == '__main__':
    print 'you should use it as module :D'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31936091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档