Farklı veri dosyalarında yıllık veri dosyalarım var. Her dosya, 1 Ocak ile 31 Aralık arasında değişen günlük verileri içerir. Veri dosyaları adı, AS060419.67 gibi görünür; burada son dört rakam, yıl, yani 1967 ve 0604, klasör adıdır. Python'da farklı klasörlerden birden fazla dosya nasıl okunabilir
Ben kodu (aşağıda) kullanarak bu birden fazla dosya okumaya çalıştım, ama sorun parseldefor stn in STNS:
STNS[stn_id].plot()
plt.title('Precipitation for {0}'.format(STNS[stn].name))
yapmak için son klasöre
def date_parser(doy, year):
return dt.datetime.strptime(doy.zfill(3)+year, '%j%Y')
files = glob.glob('????/AS*')
files.sort()
files
STNS = {}
for f in files:
stn_id, info = f.split('/')
year = "".join(info[-5:].split('.'))
#print (f,stn_id)
with open(f) as fo:
data = fo.readlines()[:-1]
data = [d.strip() for d in data]
data = '\n'.join(data)
with open('data.dump', 'w') as dump:
dump.write(data)
parser = lambda date: date_parser(date, year=year)
df = pd.read_table('data.dump', delim_whitespace=True,names=['date','prec'],
na_values='DNA', parse_dates=[0], date_parser=parser, index_col='date')
df.replace({'T': 0})
df = df.apply(pd.to_numeric, args=('coerce',))
df.name = stn_name
df.sid = stn_id
if stn_id not in STNS.keys():
STNS[stn_name] = df
else:
STNS[stn_id] = STNS[stn_id].append(df)
STNS[stn_id].name = df.name
STNS[stn_id].sid = df.sid
#outfile.write(line)
geçen yıl verileri için sadece okur Son klasörde sadece geçen yıl verileri okur. Herkes bu problemi çözmeye yardımcı olabilir. Yardımınız çok takdir edilecektir.
İstediğiniz gibi geliyor [os.walk] (http://www.tutorialspoint.com/python/os_walk.htm) – willnx
Yardımcı olabilir misiniz :( – bikuser
Çıkış verilerinin üzerine 'open (' data.dump ',' w ') 'ile yazıyorsunuz. Muhtemelen bu dosyayı '' a '' modunda açmalısınız. [Python açık yerleşik fonksiyonuna: a, a +, w, w + ve r +? Modları arasındaki fark] 'a (http://stackoverflow.com/q/1466000/4014959) dosya modları hakkında bilgi için. –