zoukankan      html  css  js  c++  java
  • 从文件夹中找需要的信息 并生成csv文件

     1 import os,sys
     2 import csv
     3 
     4 file_folder = sys.argv[1]
     5 # file_folder = r"/Users/vito/Desktop/0120 "
     6 final_info={}
     7 txt_path_list=[]
     8 
     9 # 如需要处理更多log信息,在下面三行最后面添加; 如果读不到数据 可以检查关键字是否一致
    10 fileHead = ('distance', 'center_4edge_mean_MTF50_Y','left_diff_MTF50_Y')
    11 request_testItem = ('center_4edge_mean_MTF50_Y','left_diff_MTF50_Y')
    12 distance_list = ["1750", "1755", "1760", "1765", "1770", "1775", "1780", "1785", "1790", "1795", "1800", "1805", "1810", "1815", "1820", "1825", "1830", "1835", "1840", "1845", "1850"]
    13 
    14 def handle_txt(txt_path_list,final_info):
    15     for path in txt_path_list:
    16         with open(path,'r') as f:
    17             content = f.readlines()
    18             log_info = {}
    19             for line in content:
    20                 handled_line_info = line.strip().split(':=') # name:=值
    21                 # print(handled_line_info)
    22                 if handled_line_info[0] in request_testItem:
    23                     log_info[handled_line_info[0]]=handled_line_info[1] # {name:值}
    24             for distance in distance_list:
    25                 if distance in path:
    26                     final_info[distance]=log_info # 字典格式为:distance:{name:值,name:值,name:值}
    27     return final_info
    28 
    29 def update_csv_log(path,final_info):
    30     with open(path,'w') as f:
    31         wr = csv.writer(f, dialect='excel')
    32         wr.writerow(fileHead)
    33         for distance,txt_info in final_info.items():
    34             data_value = []
    35             for item in request_testItem:
    36                 item_value = final_info[distance].get(item)
    37                 data_value.append(item_value)
    38             new_row = (distance,*tuple(data_value))
    39             wr.writerow(new_row)
    40 
    41 def get_txt_path(filefolder,txt_path_list):
    42     tmp_path_List = os.listdir(filefolder)
    43     for File in tmp_path_List:
    44         subPath = os.path.join(filefolder,File)
    45         if os.path.isdir(subPath):
    46             get_txt_path(subPath,txt_path_list)
    47         elif subPath.endswith('txt'):
    48             txt_path_list.append(subPath)
    49             txt_path_list.sort()
    50     # print(txt_path_list)
    51     return txt_path_list
    52 
    53 
    54 txt_path_list = get_txt_path(file_folder,txt_path_list)
    55 final_info = handle_txt(txt_path_list,final_info)
    56 update_csv_log(file_folder+'/WD_summary.csv',final_info)
  • 相关阅读:
    整理SVN代码-->正式环境的代码
    业务(1)
    在一个项目中跨领域调用接口的的实现
    一个java文件编译之后会产生多个class文件
    shutil模块
    shevle模块
    confiparser模块
    sys模块
    subprocess模块
    【ADO.NET】3、从TXT中导入数据到数据库
  • 原文地址:https://www.cnblogs.com/v113/p/14528060.html
Copyright © 2011-2022 走看看