如何保存多个绘制的csv文件?FileNotFoundError: [Errno 2] No such file or directory

8 浏览
0 Comments

如何保存多个绘制的csv文件?FileNotFoundError: [Errno 2] No such file or directory

我正在尝试绘制和保存不同文件夹中的csv文件的所有图形。这些文件夹位于名为"Logs-Zip"的父文件夹中,该文件夹位于我的工作目录中。对于单个csv文件,这实际上是有效的。然而,当我使用嵌套循环保存所有绘制的图形时,我遇到了一个错误。我使用os.listdir(os.path.join(path, folder))来访问这些csv文件。运行后,我获得了第一个csv文件的保存图形和错误信息:FileNotFoundError: [Errno 2] No such file or directory: '01WEA85069_2021-06-02_19-26-56_ST193.csv'. 这个csv文件对应于迭代中的第二个csv文件。所有csv文件都有相同的标题,这是第一个文件的标题:file。我可以读取文件名,例如:01WEA82849_2021-05-21_08-50-02_ST193.csv 01WEA85069_2021-06-02_19-26-56_ST193.csv .. 但我认为在传递第一个文件之后的文件路径时出现了问题。我实际上缺少什么?提前感谢!以下是我的代码:

import pandas as pd
import matplotlib.pyplot as plt
from numpy import sqrt
import os
try:
    path = r"C:\Users\aliha\PycharmProjects\nordex\Logs-Zip"
    for folder in os.listdir(path):
        for csv_file_name in os.listdir(os.path.join(path, folder)):
            data = pd.read_csv((csv_file_name), usecols=['$Time', 'TR_A_00', 'TR_A_01', 'TR_A_02', 'TR_A_07', 'TR_A_08'])
            v12 = data['TR_A_00']
            v23 = data['TR_A_01']
            v31 = data['TR_A_02']
            A = ((v12 ** 2) + (v23 ** 2) + (v31 ** 2)) / 2
            B = ((v12 ** 2) * (v23 ** 2) + (v23 ** 2) * (v31 ** 2) + (v31 ** 2) * (v12 ** 2)) / 2
            C = ((v12 ** 2) * (v12 ** 2) + (v23 ** 2) * (v23 ** 2) + (v31 ** 2) * (v31 ** 2)) / 4
            a = B - C
            M = (1 / sqrt(3)) * sqrt(A + sqrt(3) * a.apply(lambda x: (sqrt(x))))
            G = (1 / sqrt(3)) * sqrt(A - sqrt(3) * a.apply(lambda x: (sqrt(x))))
            df3 = pd.read_csv(csv_file_name)
            new_column = pd.DataFrame({'M': M, 'G': G})
            df3 = df3.merge(new_column, left_index=True, right_index=True)
            df3.to_csv((csv_file_name), index=False)
            data = pd.read_csv((csv_file_name),usecols=['$Time', 'TR_A_00', 'TR_A_01', 'TR_A_02', 'TR_A_07', 'TR_A_08', 'M', 'G'])
            df = pd.DataFrame(data, columns=['$Time', 'TR_A_00', 'TR_A_01', 'TR_A_02'])
            df1 = pd.DataFrame(data, columns=['$Time', 'M', 'G'])
            df2 = pd.DataFrame(data, columns=['$Time', 'TR_A_07'])
            df3 = pd.DataFrame(data, columns=['$Time', 'TR_A_08'])
            fig, axes = plt.subplots(nrows=4, ncols=1)
            fig.suptitle((csv_file_name))
            df.plot(ax=axes[0], grid=True, x='$Time', y=['TR_A_00', 'TR_A_01', 'TR_A_02'])
            df1.plot(ax=axes[1], grid=True, x='$Time', y=['M', 'G'])
            df2.plot(ax=axes[2], grid=True, x='$Time', y='TR_A_07')
            df3.plot(ax=axes[3], grid=True, x='$Time', y='TR_A_08')
            fig.tight_layout()
            plt.savefig(f'{csv_file_name}.png', dpi=150)
except ValueError:
    pass

0
0 Comments

如何保存多个绘制的csv文件?

在使用Python处理csv文件时,有时候会遇到一个错误:FileNotFoundError: [Errno 2] No such file or directory。这个错误的原因是文件或目录不存在,下面将介绍这个问题的原因和解决方法。

通常出现这个错误的原因是在使用listdir函数时,它只返回文件名,而不包括文件的路径。因此,我们需要使用join函数将文件名与路径拼接在一起,以便正确读取csv文件。

下面是一个示例代码:

import os
import pandas as pd
# 定义文件夹路径
path = 'data_folder'
# 获取文件夹中的文件列表
folders = os.listdir(path)
# 循环遍历文件夹中的文件
for folder in folders:
    # 拼接文件路径
    fullpath = os.path.join(path, folder, csv_file_name)
    # 读取csv文件
    data = pd.read_csv(fullpath)
    # 进行数据处理和绘图等操作
    # ...
    # 保存处理后的数据为csv文件
    output_path = os.path.join(path, folder, 'output.csv')
    data.to_csv(output_path, index=False)

通过以上代码,我们可以正确读取和保存多个csv文件。我们首先使用listdir函数获取文件夹中的文件列表,然后使用join函数将文件名与路径拼接在一起,并使用read_csv函数读取csv文件。接下来,我们可以对数据进行处理和绘图等操作,并使用to_csv函数将处理后的数据保存为新的csv文件。

感谢大家的帮助!我也会考虑你们提供的建议。

0