Python版【行列转换】的小工具

该Python脚本(matrix_transform.py)提供了一个功能,可以将txt和excel文件中的矩阵内容进行行列转换。它使用numpy读取和处理txt文件,用pandas处理excel文件。转换后的内容会被保存到新的文件中。用户需指定输入和输出文件路径,对于excel文件还可以选择工作表名称。
摘要由CSDN通过智能技术生成

Python 文件为 matrix_transform.py,具体代码如下:

"""
矩阵转换(即对源文件中的行列进行转换后,将结果保存到新的文件中),目前支持两种文件格式:txt 和 excel
"""

import os
import numpy as np
import pandas as pd

def transformTxt(input, output):
    """将txt中的内容进行行列转换

    使用示例:

        * 将 /Users/suns/demo/input.txt 文件中的内容行转列并输出到新的文件 /Users/suns/demo/output.txt 中:
    
            >>> transformTxt('/Users/suns/demo/input.txt', '/Users/suns/demo/output.txt')
            0

    Arguments:
    
        input -- 源文件,例如:/Users/suns/demo/input.txt
    
        output -- 输出文件,例如:/Users/suns/demo/output.txt

    Return value:

        返回 0 表示成功

    """
    if os.path.exists(input):
        matrix = np.loadtxt(input, dtype=str)
        # 列转换为行
        new_matrix = [[matrix[j][i].rstrip('\n') for j in range(len(matrix))] for i in range(len(matrix[0]))]
        np.savetxt(output, new_matrix, fmt='%s')
        return 0
    else:
        raise IOError(input + ' is not exists')

def transformExcel(input, output, input_sheet_name='Sheet1', output_sheet_name='Sheet1'):
    """将execel中的内容进行行列转换

    使用示例:

        * 将 /Users/suns/demo/input.xlsx 文件中的内容行转列并输出到新的文件 /Users/suns/demo/output.xlsx 中:
    
            >>> transformExcel('/Users/suns/demo/input.xlsx', '/Users/suns/demo/output.xlsx', 'Sheet1', 'Sheet1')
            0

    Arguments:

        input -- 源文件,例如:/Users/suns/demo/input.xlsx
    
        output -- 输出文件,例如:/Users/suns/demo/output.xlsx
    
        input_sheet_name -- 源文件的Sheet名称,默认为Sheet1
    
        output_sheet_name -- 输出文件的Sheet名称,默认为Sheet1

    Return value:

        返回 0 表示成功

    """
    if os.path.exists(input):
        # 读取Excel文件
        df = pd.read_excel(input, sheet_name=input_sheet_name)
        new_df = df.transpose()
        new_df.to_excel(output, output_sheet_name, header=False, index_label='Index')
        return 0
    else:
        raise IOError(input + ' is not exists')

if __name__ == '__main__':
    """
    
    python matrix_transform.py /Users/suns/demo/input.txt /Users/suns/demo/output.txt
    
    """

    input = sys.argv[1]
    output = sys.argv[2]
    if input.endswith(".txt"):
        print('Processing txt ...')
        result_txt = transformTxt(input, output)
        print(result_txt)
    elif input.endswith(".xlsx") or input.endswith(".xls"):
        print('Processing excel ...')
        result_txt = transformExcel(input, output)
        print(result_txt)
    else:
        print("non support!")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cab5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值