Skip to content

python转换脚本下载

注:再下载使用此Python脚本之前,请确保您已熟悉使用python转换脚本这一节内容。

源码

python
import datetime

# 定义映射关系,h -high-高,m-middle-中,l-low-低
# 不区分大小写,h,m,l 同大写 H,M,L 一样
key_map = {
    'h-1': 'Q', 'h-2': 'W', 'h-3': 'E', 'h-4': 'R', 'h-5': 'T', 'h-6': 'Y', 'h-7': 'U',
    'm-1': 'A', 'm-2': 'S', 'm-3': 'D', 'm-4': 'F', 'm-5': 'G', 'm-6': 'H', 'm-7': 'J',
    'l-1': 'Z', 'l-2': 'X', 'l-3': 'C', 'l-4': 'V', 'l-5': 'B', 'l-6': 'N', 'l-7': 'M'
}

# 文件路径
# music_filename = r'E:\GENSHINN IMPACT\python_script\\YZK-ALL.txt'
music_filename = r'E:\ai\test.txt'
# 读取文件并处理每一行
try:
    with open(music_filename, 'r') as file:
        lines = file.readlines()
except FileNotFoundError:
    print(f"错误:文件 {music_filename} 不存在,请检查文件路径和文件名。\n")
except Exception as e:
    print("打开文件时发生了其他错误,错误信息如下:\n")
    print(e)
# 输出列表
transfer_lines = []

for line in lines:
    # 去除空白字符
    # line = line.strip()
    # if not line:  # 跳过空行
    #     continue

    # 分割每行的数据
    try:
        first, second, wait_time = line.split('-')
    except ValueError as e:
        print("行切割错误,此行格式不是 xx-xx-xx 形式的")
        print(f"错误行是: {line}")
        print(e)
    # 构造键值
    key_value = f'{first.lower()}-{second}'
    
    # 获取对应的字母
    letter = key_map.get(key_value, None)
    if letter is None:
        print(f"警告:未找到对应于 {key_value} 的字母")
        continue

    # 将wait_time转换为浮点数
    wait_time = float(wait_time)

    # 计算ASCII码
    ch_num = ord(letter)

    # 添加到输出列表
    transfer_lines.append([wait_time, "EK", "key down", [ch_num, letter, 0]])
    transfer_lines.append([0, "EK", "key up", [ch_num, letter, 0]])


# 终端直接打印结果,之后在写入文件中

# 终端打印结果方法
def print_all_lines(transfer_lines):
    print("[")
    for line in transfer_lines:
        # 使用str.format()方法来格式化输出
        formatted_line = " [{:.2f},\"{}\",\"{}\",[{},\"{}\",{}]],".format(
            line[0], line[1], line[2], line[3][0], line[3][1], line[3][2]
        )
        print(formatted_line)
    print("]")

# 定义写入文件方法
def write_to_file(output_file_path):
    try:
        with open(output_file_path, 'w') as file:
            file.write(f"[\n")
            for line in transfer_lines:
                formatted_line = " [{:.2f},\"{}\",\"{}\",[{},\"{}\",{}]],\n".format(
                    line[0], line[1], line[2], line[3][0], line[3][1], line[3][2]
                )
                file.write(formatted_line)
            file.write(f"]\n")
        print(f"文件输出到: {output_file_path}")
    except Exception as e:
        print("写入文件时发生错误,错误信息如下:\n")
        print(e)

# 当前时间,
current_time = datetime.datetime.now()
# 格式化时间
# formatted_time = current_time.strftime("%Y-%m-%d-%H-%M-%S")
formatted_time = current_time.strftime("%m-%d-%H-%M-%S")
# print("格式化后的当前时间是:", formatted_time)

# 写入文件的路径和名字,文件名称是 原文件名.transfer.月-日-时-分-秒.txt,例如 test.txt.transfer.09-23-22-23-06.txt
# output_file_path = f'{music_filename}.transfer.txt'
output_file_path = f'{music_filename}.transfer.{formatted_time}.txt'

# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# 注意:
#     1.python中注释的方法之一是在一行的首端 输入井号 #
#       取消注释,则删除行首的 #
#     2.此行 print_all_lines(transfer_lines) 执行终端打印,如果不想终端打印结果,需注释此行
#     3.此行 write_to_file(output_file_path) 执行写入文件,如果不想先写入文件,需注释此行
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

# 打印结果
print_all_lines(transfer_lines)
# 写入文件
# write_to_file(output_file_path)

使用相关

按规则转换音符

使用python转换脚本