【发布时间】:2017-01-18 20:00:21
【问题描述】:
我正在阅读一系列气候数据文本文件,每个文件包含 9000 行,第一行是站名、经度等信息。 从 8 到末尾的行包含气候数据。
我想读取所有文件并输出两个文件“MetLocations.csv”和“MetData.csv”,其中第一个文件由所有文件的第一行的集合组成,而第二个文件由所有文件组成气候数据。
我遍历了所有文件,阅读了信息,然后打印出来,除了一个奇怪的问题之外没有任何问题。当我做一个双'with'循环时,文件 MetLocations.csv 是空的,而当我一个接一个地循环时,它写得很好! 请查看代码以获得更清晰的视图。
这是我的代码的一部分:
with open('MetLocations.csv','wb+') as locations:
wr_loc = csv.writer(locations, quoting=csv.QUOTE_NONE, quotechar='', delimiter=',', escapechar='\\')
headers = ["St_Id","City","State","Country","Source","WO code","Lat","Long","TimeZone","Alt"]
wr_loc.writerow(headers)
with open('MetData.csv','a+')as met_data:
wr_data = csv.writer(met_data, quoting=csv.QUOTE_NONE, quotechar='', delimiter=',', escapechar='\\',lineterminator='\n')
headers = ["St_ID", "Year", "Month", "Day", "Hour", "Minute", "Data Source and Uncertainty Flags", "Dry Bulb Temperature"]
wr_data.writerow(headers)
for n, f in enumerate(filenames):
print n, f,time.strftime('%Y-%m-%d %H:%M:%S')
full_path = os.path.join(source, f)
with open(full_path, 'r') as input_file:
content = input_file.readlines()
location = [n] + list_elements(content[0])[1:]
wr_loc.writerow(location)
meteo = []
for line in content[8:]:
meteo.append([n] + list_elements(line))
wr_data.writerows(meteo)
在上面的代码运行结束时,我发现文件 MetData.csv 中充满了数据,而文件 MetLocations.csv 是空的!
奇怪的是,当我在最后 4 行注释的情况下运行相同的代码时,MetLocations.csv 被毫无问题地填充!
是否不允许打开两个连续的 CSV 文件进行追加? 或者我的代码有什么错误?
非常感谢您的帮助。
【问题讨论】:
-
@ِAri Gold,谢谢,但提到的问题是关于并行读取文件,而不是写入。