有大量仪器数据需要提取出来处理,一个个打开手动复制太麻烦了,于是简单学了一点基础语法,参考了几位大佬的代码思路。
问题描述:需要把图示的框选数据提取出来
提取结果:(将文件名与数据分开是为了后续方便倒入Excel处理)
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()