python读取文件夹下所有txt文件的指定行数据,并输出到指定文件内

        有大量仪器数据需要提取出来处理,一个个打开手动复制太麻烦了,于是简单学了一点基础语法,参考了几位大佬的代码思路。

问题描述:需要把图示的框选数据提取出来

python读取文件夹下所有txt文件的指定行数据,并输出到指定文件内_第1张图片

提取结果:(将文件名与数据分开是为了后续方便倒入Excel处理)python读取文件夹下所有txt文件的指定行数据,并输出到指定文件内_第2张图片 

1.批量文件格式更换:将仪器生成的文件格式abt转化为txt格式:

# @Time:2022/8/15 23:02
# python批量更换后缀名
import os
import sys
os.chdir(r'/Users/xtall/PycharmProjects/pythonProject1/QIQIHAER copy/错海08/')# 列出当前目录下所有的文件					
files = os.listdir('./')
for fileName in files:
	portion = os.path.splitext(fileName)
	if portion[1] == ".abt":					# 如果后缀是.abt
		newName = portion[0] + ".txt"			#把原文件后缀名改为 txt
		os.rename(fileName, newName)

2.数据提取:

# @Time:2022/8/16 08:53
import os
import fnmatch
import re

path ='/Users/xtall/PycharmProjects/pythonProject1/QIQIHAER copy/富裕12'
# files = os.listdir(path)                              #得到文件夹下所有文件
files = fnmatch.filter(os.listdir(path),'*.txt')        #利用fnmatch筛选文件夹下所有txt文件(用于解决文件夹下DC.store文件的影响)
files.sort()                                            #对所有的文件进行排序

Result_Output_Path = path + '/result_file.txt'             #构造当前文件夹下的结果输出路径
with open(Result_Output_Path,'w') as result_file:       #打开输出结果的文件
    result_file.write(path.split('/')[-2]+path.split('/')[-1]+' 文件数据输出顺序:''\n\n')
    for filename in files:
        result_file.write(filename.split('.')[0]+'\n\n')#讲文件夹下所有文件名称输出到结果文件中(去掉了后缀)
    result_file.close()

for file in files:
    Current_file_path = path + '/' + file               #构造当前所处理文件的路径
    # print(file.split('.')[0])                           #输出所处理文件夹名称(去掉了后缀)

    with open(Current_file_path,'r') as current_file:
        context = current_file.readlines()              #读取所处理文件的所有内容
        current_file.close()
    with open(Result_Output_Path, 'a') as result_file:  # 打开输出结果的文件
        target_line = 0
        for context_line in context:  # 循环遍历所有行的内容
            if context_line.find('DataType=ArbotomData') != -1:
                for i in range(2, 26):  # 定位到数据所在行数区间
                    list = context[target_line + i].split()  # 将字符串划分为列表用于后面数据筛选
                    for j in range(len(list)):
                        num = int(list[j])
                        if num > 100 and num < 3000:  # 筛选传播时间大于100小于3000
                            print(num, end=' ')
                            result_file.write(list[j] + ' ')
                    if i == 3 or i == 14:  # 两侧数据换行
                        print()
                        result_file.write('\n')
            target_line += 1
    result_file.close()




 

你可能感兴趣的:(python)