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!")