我试图使用傅里叶滤波器过滤我的实验测量值,这是有效的。现在我在一个文件夹中有多个原始数据文件(.txt),我想要过滤,然后放在不同的文件夹中。
结构如下;
过滤脚本:C:\ Users \ myname \ Desktop \ folder1 \ Scripts
原始数据文件夹:C:\ Users \ myname \ Desktop \ folder1 \ Scripts \ Raw_data
过滤的数据文件夹:C:\ Users \ myname \ Desktop \ folder1 \ Scripts \ Filtered_data
我的代码是:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy.fftpack import rfft, irfft, fftfreq
data = pd.read_csv(r'C:\Users\myname\Desktop\folder1\Scripts\Raw_data\rawtest_datafile1.txt')
time = np.linspace(0, 4017, 4018)
signal = data.TG
print(Filter(time, signal, 0.004, 0.0075, False, 0.04)/10)
1D阵列的结果。
现在我想知道如何导入所有文件rawtest_datafile [i] .txt,过滤它们,然后使用循环逐个创建一个名为filteredtest_datafile [i] .txt的新文件。
我希望这很清楚。
答案 0 :(得分:2)
使用以下示例代码,并根据需要进行修改。
data_file_format="C:\Users\myname\Desktop\\folder1\Scripts\Raw_data\\rawtest_datafile{}.txt";
output_file_format="C:\Users\Ruben\Desktop\BEP\Scripts\Filtered_data\output_file{}.txt";
for i in range(1,10):
datafile=data_file_format.format(i);
outputfile=output_file_format.format(i);
data = pd.read_csv(datafile);
time = time = np.linspace(0, 4017, 4018)
signal = data.TG
print_to_file(Filter(time, signal, 0.004, 0.0075, False, 0.04)/10,outputfile);
注意: 1. print_to_file是您需要定义的函数。它应该有两个输入,你需要打印的数据和文件路径。
答案 1 :(得分:0)
您可以在Python的os.listdir()
模块中使用os
来获取目录的内容。在此之后,使用同一模块中的isfile
检查其文件是否正确。如果是文件,则执行过滤操作,并将文件写入目标。
import os
for content in os.listdir(source_path):
if os.path.isfile(os.path.join(source_path, content)):
# read file and perform filter operation
new_file = "filtered" + content
# write data to os.path.join(dest_path, new_file)
希望这有帮助。