LI-2200LAI数据读取python
li2200是测量植物冠层的一个仪器,其得到的结果是一个个文件夹,数据多时比艰难获取。利用python将文件夹的lai读取出来author:shenshuaijietime:22:0507/25/2019des:提取li-2200的LAI"""import osimport pandas as pddef get_all_files(dir):"""获...
·
li2200是测量植物冠层的一个仪器,其得到的结果是一个个文件夹,数据多时比艰难获取。利用python将文件夹的lai读取出来,由于是否存在GPS所以写个判断。读出的数据有LAI,叶倾角,经纬度。打开时选择LI2200文件的路径,输出路径在程序里修改。
"""
author:shenshuaijie
time:22:05 07/03/2020
des:提取li-2200的LAI
"""
import tkinter as tk
from tkinter import filedialog
import os
import pandas as pd
def get_all_files(dir):
"""
获取文件夹列表函数
:param dir: 文件夹所在位置
:return: 文件夹内文件名称列表
"""
files_ = []
lit = os.listdir(dir)
for i in range(0, len(lit)):
path = os.path.join(dir, lit[i])
if os.path.isdir(path):
files_.extend(get_all_files(path))
if os.path.isfile(path):
files_.append(path)
return files_
def main():
"""
主函数
"""
root = tk.Tk() # 可视化选择文件夹
root.withdraw()
Folder_path = filedialog.askdirectory()
dir_lai = Folder_path # 文件夹所在位置
file_dir = get_all_files(dir_lai)
li_2200 = {}
lai = []
for i in file_dir:
f = open(i, 'r')
a = f.readlines()
if not a[9][:3]=='LAI':
li_2200['name'] = i[i.rindex('\\')+1: -4]
li_2200['LAI'] = float(a[14][4:9])
li_2200['ACF'] = float(a[16][4:10])
li_2200['DIFN'] = float(a[17][5:11])
li_2200['MTA'] = float(a[18][4:9])
li_2200['LAT'] = float(a[9][7:17])
li_2200['LON'] = float(a[10][8:19])
li_2200['DATE'] = float(a[2][5:14])
lai.append(li_2200.copy())
f.close()
else:
li_2200['name'] = i[i.rindex('\\')+1: -4]
li_2200['LAI'] = float(a[9][4:9])
li_2200['ACF'] = float(a[11][4:10])
li_2200['DIFN'] = float(a[12][5:11])
li_2200['MTA'] = float(a[13][4:9])
li_2200['LAT'] = None
li_2200['LON'] = None
li_2200['DATE'] = float(a[2][5:14])
lai.append(li_2200.copy())
f.close()
df = pd.DataFrame(lai)
DF1=df.reindex(columns=['name','LAI','ACF','DIFN','MTA','LAT','LON','DATE'])
DF1.to_excel(r'C:\Users\Administrator\Desktop\数据\20200513before.xlsx', index=False) # 文件输出位置
print('完成了,到输出的文件夹看看吧!')
if __name__ == '__main__':
main()
更多推荐
已为社区贡献1条内容
所有评论(0)