代码之家  ›  专栏  ›  技术社区  ›  Ruben

如何将Python打印从循环导出到不同的文本文件?

  •  0
  • Ruben  · 技术社区  · 6 年前

    我试图用傅里叶滤波器过滤我的实验测量值,这很有效。现在,我在一个文件夹中获得了多个原始数据文件(.txt),我想对其进行筛选,然后将其放在另一个文件夹中。

    结构如下:;

    筛选脚本:C:\Users\myname\Desktop\folder1\Scripts

    原始数据文件夹:C:\Users\myname\Desktop\folder1\Scripts\Raw\u data

    筛选数据文件夹:C:\Users\myname\Desktop\folder1\Scripts\Filtered\U 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\u datafile[I]。txt,过滤它们,并生成一个名为filteredtest\u datafile[i]的新文件。txt一个接一个使用循环。

    我希望这足够清楚。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Subhendu Bharti    6 年前

    使用以下示例代码,并根据需要进行修改。

    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\u to\u file是您需要定义的函数。它应该有两个输入,即需要打印的数据和文件路径。

    1. 您需要知道运行for循环的数据文件数。否则,您应该使用操作系统模块。
        2
  •  0
  •   Ritik Saxena    6 年前

    你可以用 os.listdir() 在Python中 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)
    

    希望这有帮助。