Skip to main content

Simple python lib, processing excel,mail,textgrid,metadata,wav; using for SurfingTech or others

Project description

surfing_pylib

Description

冲浪科技python 库 公司的Python库都在这个仓库中维护统一管理

Installation

pip install kog_lib

Instructions

  1. 查看帮助

    import kog_lib

    kog_lib.help()

    kog_lib.help(type)

    type in {'excel','textgrid','metadata','wav','fs','utils'}

  2. excel读取和写入

        实例化
            my_excel = kog_lib.Excel(excel_path)
            
            my_excel = kog_lib.Excel()
            my_excel.load(excel_path)
    
        数据读取
            my_excel.data = [
                [第一行],
                [第二行],
                ...
                [最后一行]
            ]
    
        写入数据
            my_excel.make(data, filename='name1.xls', sheetname='sheet1')
                data是一个二位的列表如上述数据读取部分的my_excel.data
    
        打印内容
            my_excel.print(part,n)
                part: "all" "head" "tail"全部打印 从头打印n个 从尾部打印n个
                n: 打印个数
    
  3. textgrid文件操作

        类实例化
            方式1:
                my_tg = kog_lib.SFTextGrid()
                my_tg.load(path)
            方式2:
                my_tg = kog_lib.SFTextGrid(path)
    
        获取有效时长等信息
            : t_file, t_effect, t_invalid, n_invalid =
                            my_tg.get_textgrid_stat(re_str)  # re_str是正则表达式
            : 返回 总时长有效时长无效时长无效个数
    
        修改textgrid中相关内容
            : my_tg.sup_interval(item_ind,interval_ind,type,sup_str)
                item_ind: item的序号, 0 或者 1
                ind_ininterval_indterval:interval的序号从1开始
                type: 修改interval的哪个字段,maxtimemintimemark
                sup_str:修改成sup_str
    
        textgrid中speaker检测
            : my_tg.check_with_txt(txt_path)
                txt_path: 记录speaker相关信息的txt文件
            先检查textgrid是否有误在检查txt_path是否正确最后看textgrid中的speaker是否在txt中
    
        textgrid检查
            : my_tg.check():
    
  4. metadata文件操作

        实例化:
            my_metadata = kog_lib.SFMetadata()
                此时会实例化一个默认的metadata模板
    
        导入metadata模板:
            my_metadata.load_template(filepath)
                也可以读取现有的metadata文件作为模板
    
        修改metadata文件内容:
            my_metadata.set_metadata_element(key,value)
                : my_metadata.set_metadata_element("BIR","北美")
    
        获取metadata某个key的值:
            my_metadata.get_metadata_element(key)
                : value = my_metadata.get_metadata_element("BIR") # value="北美"
    
        生产metadata文件:
            my_metadata.make_metadata(output)
                : my_metadata.make_metadata("/data/xxxx.metadata")
    
  5. wav音频分析处理

        实例化
            my_wav = kog_lib.SFWav(wav_path)
            
            my_wav = kog_lib.SFWav()
            my_wav.open(wav_path)
    
        获取主要参数(声道数样本宽度采样率总帧数)
            my_wav.getparams()
    
        得到区间内峰值
            my_wav.get_peak(selected_channel,start_time,end_time)
                selected_channel: 要得到哪个声道的数据默认1声道
                start_time: 起始时间默认0
                end_time: 终止时间默认总时长
    
        切割音频: 从start_time开始且切到end_time时长的音频保存到output
            my_wav.cut_wav(output,start_time,end_time,selectedchannel=1)
                默认切取第一个声道的信息保存为单声道音频
    
        其他方法
            my_wav.readframes(nframes,start_frame) # 从第几帧开始读取多少帧
            my_wav.readframes_bytime(start_time,end_time) # 从第几秒开始读到第几秒
    
  6. filesystem文件系统

        实例化此时会将当前目录挂载到文件系统
            root_fs = kog_lib.SFFS()
    
        显示当前服务器配置
            root_fs.show_current_server_config()
    
        新增服务器系统配置
            root_fs.add_server_config(s_key,s_path)
                s_key:服务器简称例如 "SVR1"
                s_path:服务器路径例如 "ssh://username:password@192.168.1.104:22"
    
        挂载文件系统
            挂载本机其他路径
                root_fs.combine_fs("local_samples","/samples")
            挂载ssh远程服务器
                root_fs.combine_fs("my_ubuntu","MY_UBUNTU")
                    ps"MY_UBUNTU"的配置已经add_server_config过了
            挂载FTP服务器
                root_fs.combine_fs("surfing_ftp","SFTP")
                    ps"SFTP"的配置已经add_server_config过了
            挂载tar和zip文件系统系统根目录下的压缩包
                root_fs.combine_fs("tar_1","/test.tar.gz",write=True,compression="gz")
                root_fs.combine_fs("zip_1","/test.zip",write=True,compression=0)
    
        挂载文件系统后可将各文件系统视为根目录下的子目录可直接进行各种文件操作
            ***很多操作在root_fs.close()后才会生效***
            返回根目录下列表
                my_fs = root_fs.get_combined_fs()
                my_fs.listdir("/")
            打印目录结构
                my_fs.tree(path="/",max_levels = 1)
            复制 从my_ubuntu复制到tar压缩包内(仅可向新建的tar中写入及write=True)
                my_fs.copy("/my_ubuntu/p2.py","/tar_1/1.py",overwrite=True)
            在tar中创建多层目录并向此目录复制文件
                my_fs.makedirs("/tar_1/x/xx")(仅可向新建的tar中写入及write=True)
                my_fs.copy("/my_ubuntu/p2.py","/tar_1/x/xx/1.py",overwrite=True)
            复制 从my_ubuntu复制到zip压缩包内(仅可向新建的zip中写入及write=True)
                my_fs.copy("/my_ubuntu/p2.py","/zip_1/1.py",overwrite=True)
            在zip中创建多层目录并向此目录复制文件(仅可向新建的zip中写入及write=True)
                my_fs.makedirs("/zip_1/x/xx")
                my_fs.copy("/my_ubuntu//p2.py","/zip_1/x/xx/1.py",overwrite=True)
                my_fs.copydir("/my_ubuntu/scripts","/local_current/scripts",create=True)
    
            其他更详细的用法见pyfilesystem2的介绍:
    
  7. utils通用方法

        按行读文件
            kog_lib.SFUtils.get_file_lines(path)
    
        按行读文件并去重
            kog_lib.SFUtils.get_uniq_lines_from_file(path)
    
        列表去重
            kog_lib.SFUtils.uniq_lines(lines)
    
        列表写入文件
            kog_lib.SFUtils.write_lines(filepath,lines)
    
        字符串切割并清洗
            kog_lib.SFUtils.split_clean_line(line,split_char,begin_re,end_re,clean_chinese)
                line:要切割的字符串
                split_char:以这个字符切分
                begin_re: 清洗字符串line头部的正则默认 儿童英语项目的正则
                end_re: 清洗字符串line尾部的正则默认 儿童英语项目的正则
                clean_chinese: 是否清除汉字默认 清除汉字
    
        根据正则表达式re_str清洗某行
            kog_lib.SFUtils.clean_line(line,re_str)
    
        根据正则表达式re_str按行清洗某列表
            kog_lib.SFUtils.clean_lines(lines,re_str)
    
        根据正则表达式re_str按行清洗某列表返回列表元素是(新行原行)的元组
            kog_lib.SFUtils.clean_lines_map_list(line,re_str)
    
        比较两个list返回A中不再B的元素
            kog_lib.SFUtils.diff_list(A,B)
    
        以空格区分返回某行的词数
            kog_lib.SFUtils.get_wordcount_from_line(line)
    
        以空格区分返回某列表次数
            kog_lib.SFUtils.get_wordcount_from_line(lines)
    
        对列表lines分组每组requaired_lines行返回组列表的列表
            kog_lib.SFUtils.lines_split_2_sublines(lines,requaired_lines)
    
        获取str1到str2的编辑距离
            kog_lib.SFUtils.get_edit_distance(str1,str2)
    
        获取str1到str2的编辑步骤
            kog_lib.SFUtils.get_edit_ops(str1,str2)
    
        打印str1转换到str2的详细步骤
            kog_lib.SFUtils.print_edit_ops(str1,str2)
    
        打印列表
            kog_lib.SFUtils.print_lines(lines)
    
        打印字典
            kog_lib.SFUtils.print_dict(dict)
    
        批量重命名
            kog_lib.SFUtils.modify_name(path,prefix="",suffix="",mode="add",deep=False)
                path: 修改path路径下文件和文件夹的名称不含path
                prefix: 要加的前缀
                suffix: 要加的后缀
                mode: 模式add/minus
                deep: True深度重命名遍历path下文件及文件夹
                      False仅对path下文件和文件夹进行重命名
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kog_lib-0.2.3.tar.gz (23.0 kB view hashes)

Uploaded Source

Built Distribution

kog_lib-0.2.3-py3.6.egg (60.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page