如何保存多个绘制的csv文件?FileNotFoundError: [Errno 2] No such file or directory
如何保存多个绘制的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
如何保存多个绘制的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文件。
感谢大家的帮助!我也会考虑你们提供的建议。