python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件...

python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件

觉得有用的话,欢迎一起讨论相互学习~Follow Me

参考文献
python操作txt文件中数据教程[1]-使用python读写txt文件
python操作txt文件中数据教程[2]-python提取txt文件

  • 原始txt文件
    949241-20181126185353093-749788301.jpg
    949241-20181126174431395-986992191.jpg
  • 程序实现后结果
    949241-20181126185540647-664198293.jpg
    949241-20181126183215177-60213435.jpg
    949241-20181126183505914-2111372472.jpg

程序实现

import csv
import os

SUM_LOG_FILE = []  # sum_csv文件名
INDIVIDUAL_LOG_FILE = []  # individual_csv文件名
File_Name = []  # txt_文件名

DNA_Group = 7  # 表示每7条DNA组成一个组

Sum_log_file_header = ["No", "Continuity", "Hairpin", "H-measure", "Similarity", "GC"]
Individual_log_file_header = ["No", "DNAstructure", "Continuity", "Hairpin", "H-measure", "Similarity", "TM", "GC"]


def Read_Files(filename):
    DNA_log = []  # 精英种群个体日志mod9=1-8
    Sum_log = []  # 精英种群总体日志mod9=0
    sum_evaindex = [[] for i in range(6)]
    Individual_evaindex = [[] for i in range(8)]
    with open(filename, 'r') as f:
        i = 1
        for line in f.readlines():
            if i%9 == 0:
                Sum_log.append(line)
            else:
                DNA_log.append(line)
            i = i + 1
    f.close()
    Sum_no = 1
    dna_log_no = 0
    for Sum in Sum_log:
        sum_eva_index = Sum.split("\n")[0].split(" ")[1:]
        sum_evaindex[0].append(int(Sum_no))
        sum_evaindex[1].append(float(sum_eva_index[0]))  # Con
        sum_evaindex[2].append(float(sum_eva_index[1]))  # HP
        sum_evaindex[3].append(float(sum_eva_index[2]))  # Hm
        sum_evaindex[4].append(float(sum_eva_index[3]))  # Si
        sum_evaindex[5].append(float(sum_eva_index[4]))  # GC
        Sum_no = Sum_no + 1
    for dna_log in DNA_log:
        # 获取序号值
        if (dna_log_no + 1)%8 == 1:
            for i in range(DNA_Group):
                Individual_evaindex[0].append(int(dna_log.split("\n")[0]))
        else:
            # 获取各项指标
            Individual_evaindex[1].append(dna_log.split("\n")[0].split(" ")[0])  # 所有DNA序列全部记载,使用原有的str字符串类型记载
            Individual_evaindex[2].append(float(dna_log.split("\n")[0].split(" ")[1]))  # DNA序列的连续值Con,注意要转换为浮点数类型
            Individual_evaindex[3].append(float(dna_log.split("\n")[0].split(" ")[2]))  # Hp茎区匹配
            Individual_evaindex[4].append(float(dna_log.split("\n")[0].split(" ")[3]))  # H-measure
            Individual_evaindex[5].append(float(dna_log.split("\n")[0].split(" ")[4]))  # Similarity
            Individual_evaindex[6].append(float(dna_log.split("\n")[0].split(" ")[5]))  # TM
            Individual_evaindex[7].append(float(dna_log.split("\n")[0].split(" ")[6]))  # GC
        dna_log_no = dna_log_no + 1

    return sum_evaindex, Individual_evaindex


# 将数据写入csv日志文件中
def Write_SumFiles(filename, sum_evaindex):
    with open(filename, "w", newline='') as f:
        writer = csv.writer(f)
        writer.writerow(Sum_log_file_header)  # 注意,此处使用writerow而不是使用writerows
        for i in range(sum_evaindex[0][-1]):
            writer.writerow(
                [sum_evaindex[0][i], sum_evaindex[1][i], sum_evaindex[2][i], sum_evaindex[3][i], sum_evaindex[4][i],
                 sum_evaindex[5][i]])
        f.close()


def Write_IndividualFiles(filename, sum_evaindex, Individual_evaindex):
    with open(filename, "w", newline='') as f:
        writer = csv.writer(f)
        writer.writerow(Individual_log_file_header)  # 注意,此处使用writerow而不是使用writerows
        for i in range(sum_evaindex[0][-1]*DNA_Group):
            writer.writerow(
                [Individual_evaindex[0][i], Individual_evaindex[1][i], Individual_evaindex[2][i],
                 Individual_evaindex[3][i],
                 Individual_evaindex[4][i], Individual_evaindex[5][i], Individual_evaindex[6][i],
                 Individual_evaindex[7][i]])
        f.close()


def file_name(file_dir):
    for files in os.listdir(file_dir):
        if os.path.splitext(files)[1] == '.txt':
            File_Name.append(files)
            SUM_LOG_FILE.append("./test/sumlog_" + os.path.splitext(files)[0] + ".csv")
            INDIVIDUAL_LOG_FILE.append("./test/Individual_" + os.path.splitext(files)[0] + ".csv")


# 获取当前目录下所有txt文件名
file_name(".")
for i, j, k in zip(File_Name, SUM_LOG_FILE, INDIVIDUAL_LOG_FILE):
    print(i)
    print(j)
    print(k)
    Sum_Evaindex, Individual_Evaindex = Read_Files(i)
    Write_SumFiles(filename=j, sum_evaindex=Sum_Evaindex)
    Write_IndividualFiles(filename=k, sum_evaindex=Sum_Evaindex, Individual_evaindex=Individual_Evaindex)

转载于:https://www.cnblogs.com/cloud-ken/p/10022198.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值