问题描述
我正在尝试在不同的文件夹中绘制并保存 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'.
我可以读取文件名,例如:
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),'TR_A_08','M','G'])
df = pd.DataFrame(data,columns=['$Time','TR_A_02'])
df1 = pd.DataFrame(data,'G'])
df2 = pd.DataFrame(data,'TR_A_07'])
df3 = pd.DataFrame(data,'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_02'])
df1.plot(ax=axes[1],y=['M','G'])
df2.plot(ax=axes[2],y='TR_A_07')
df3.plot(ax=axes[3],y='TR_A_08')
fig.tight_layout()
plt.savefig(f'{csv_file_name}.png',dpi=150)
except ValueError:
pass
解决方法
常见错误。
listdir
只给出文件名,你必须 join
和 folder
fullpath = os.path.join(path,folder,csv_file_name)
data = pd.read_csv(fullpath)