[英]Python: Reading Data from Multiple CSV Files to Lists
我正在使用Python 3.5在目录和子目录中移动以访问csv文件,并使用这些文件中的数据填充数组。 代码遇到的第一个csv文件如下所示:
我的代码如下:
import matplotlib.pyplot as plt
import numpy as np
import os, csv, datetime, time, glob
gpheight = []
RH = []
dewpt = []
temp = []
windspd = []
winddir = []
dirpath, dirnames, filenames = next(os.walk('/strm1/serino/DATA'))
count2 = 0
for dirname in dirnames:
if len(dirname) >= 8:
try:
dt = datetime.datetime.strptime(dirname[:8], '%m%d%Y')
csv_folder = os.path.join(dirpath, dirname)
for csv_file2 in glob.glob(os.path.join(csv_folder, 'figs', '0*.csv')):
if os.stat(csv_file2).st_size == 0:
continue
#create new arrays for each case
gpheight.append([])
RH.append([])
temp.append([])
dewpt.append([])
windspd.append([])
winddir.append([])
with open(csv_file2, newline='') as f2_input:
csv_input2 = csv.reader(f2_input,delimiter=' ')
for j,row2 in enumerate(csv_input2):
if j == 0:
continue #skip header row
#fill arrays created above
windspd[count2].append(float(row2[5]))
winddir[count2].append(float(row2[6]))
gpheight[count2].append(float(row2[1]))
RH[count2].append(float(row2[4]))
temp[count2].append(float(row2[2]))
dewpt[count2].append(float(row2[3]))
count2 = count2 + 1
except ValueError as e:
pass
我已经设置为每个新的csv文件创建一个新的数组。 但是,当我打印第三列(温度)时,
for n in range(0,len(temp)):
print(temp[0][n])
它仅部分打印该列数据:
-70.949997
-68.149994
-60.449997
-63.649994
-57.449997
-51.049988
-45.349991
-40.249985
-35.549988
-31.249985
-27.149994
-24.549988
-22.149994
-19.449997
-16.349976
-13.25
-11.049988
-8.949982
-6.75
-4.449982
-2.25
-0.049988
另外,我相信一个相关的问题是,当我简单地做时,
print(temp)
突出显示的部分属于该一个csv文件的部分,因此应位于一个数组中。 最后还有其他不应该存在的空数组。
在此之前,我有一段代码(未显示),该段代码执行相同的操作,但使用的csv文件不同,并且可以按预期工作,将每个文件的数据分离到一个新数组中,没有空数组。 感谢您的帮助!
问题是我使用了try
and pass
。 满足我条件的所有文件都已满足,但是其中一些文件的内容读取方式存在问题,这导致我稍后在代码中收到错误。 对于希望使用try
and pass
任何人,请确保您能够安全地传递代码块可能遇到的任何异常。 否则,以后可能会引起问题。 如果您没有将其传递给您,您仍然可能会得到一个错误,但这将迫使您适当地修复它而不是忽略它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.