遍历win10文件夹并解析json文件,按照json格式存入mongo数据库(基于python 3.6)

import reimport jsonfrom pymongo import MongoClientimport os

# def Write_json(data):#     open_Json = open("1.json", "a")#     Write_json = json.dumps(data)#     open_Json.write(Write_json)#     open_Json.close()

def load_Mongo(Address, port, Process_data, Name):    client = MongoClient(Address, port)  #数据地址+端口号    db = client.portal         #数据库    collection = db.typhoons   #数据表    # collection.find({Name})    collection.insert(Process_data)    for i in collection.find({"ename": Name}):         id = str(i[‘_id‘])         print(‘已存放,‘ + ‘ObjectID:‘ + ‘‘ + id)
def loadFont(address, port, Json_File):    n = 0    Date = []    Info = []    ADV= []    LAT= []    LON= []    TIME= []    WIND= []    PR= []    STAT = []    Data_Header = []    json_File = Json_File      #json文件地址
with open(json_File, encoding=‘utf-8‘) as f: while True:    lines = f.readline()    n = n+1    if not lines:        break        pass

Colon = re.findall(r‘:‘, lines, re.I)    if Colon:          #处理第一行数据       date = re.split(r":", lines)    #分割冒号       date = date[1].replace(‘\r‘, ‘‘).replace(‘\n‘, ‘‘).replace(‘\t‘, ‘‘).replace(‘ ‘, ‘‘)       Date.append(date)       # print(Date)    else:
if n == 2:    info = lines    info = info.replace(‘\r‘, ‘‘).replace(‘\n‘, ‘‘).replace(‘\t‘, ‘‘)    Info.append(info)else:    if n == 3:         Data_header = re.split(r" ", lines)         while ‘‘ in Data_header:     #移除空格             Data_header.remove(‘‘)         for head_Num in range(len(Data_header)):             head_Find = re.findall(r‘\n‘, Data_header[head_Num], re.I)             if head_Find:     #查找\n并删除,然后加入json文件                Data_header[head_Num] = Data_header[head_Num].replace(‘\r‘, ‘‘).replace(‘\n‘, ‘‘).replace(‘\t‘, ‘‘)                # json_List.setdefault(Data_header[head_Num])  #增加键值对                Data_Header.append(Data_header[head_Num])

else:                 head_Data = Data_header[head_Num]                 # json_List.setdefault(head_Data)   #增加键值对                 Data_Header.append(head_Data)         # Write_json(json_List)              #写入json         # print(Data_header)
else:               if n > 3:                 all = re.split(r" ", lines)                 while ‘‘ in all:                     all.remove(‘‘)                 ADV.append(all[0])                 LAT.append(all[1])                 LON.append(all[2])                 TIME.append(all[3])                 WIND.append(all[4])                 PR.append(all[5])                 stat = []                 for count in range(len(all)):                     if count > 5:                         stat.append(all[count])                         # print(stat)                     else:                         continue                 stat = " ".join(str(i) for i in stat)   #合并数据                 stat = stat.replace(‘\r‘, ‘‘).replace(‘\n‘, ‘‘).replace(‘\t‘, ‘‘)                 STAT.append(stat)# print(STAT)
#设计字典

Addit_all = [ ]json_List = {‘ename‘: ‘‘, ‘is_current‘: ‘null‘,‘enddate‘:‘null‘, ‘name‘:‘null‘, ‘sn‘:‘null‘,‘land‘:[ ], ‘startdate‘:‘‘,             ‘track‘:[ ] }json_List[‘startdate‘] = Date[0]json_List[‘ename‘] = Info[0]i = len(ADV)j = 0while j < i:    # json_List [‘startdate‘] = TIME[j]    addit = {}    addit [‘forecast‘] = ‘null‘    if STAT[j] == ‘TROPICAL STORM‘:        addit[‘type‘] = ‘TS‘    elif STAT[j] == ‘TROPICAL DEPRESSION‘:        addit[‘type‘] = ‘TD‘    else:
addit[‘type‘] = STAT[j]    addit[‘speed‘] = WIND[j]    addit[‘moveDirection‘] =‘null‘    # addit[‘ADV‘] = ADV[j]    addit[‘longitude‘] = LON[j]    addit[‘latitude‘] = LAT[j]    addit [‘radius10‘] = ‘null‘    addit[‘time‘] = TIME[j]    addit[‘radius7‘] = ‘null‘    addit [‘pressure‘] = PR[j]    addit [‘power‘] = ‘null‘    addit[‘des‘] = ‘‘    addit[‘moveSpeed‘] = ‘null‘    Addit_all.append(addit)   #将多组数据加入数组    j = j + 1json_List[‘track‘] = Addit_all# Write_json(json_List)print(json_List)load_Mongo(address, port, json_List, Info[0])
List = []def traverse(json_Dir):    fs = os.listdir(json_Dir)    for file in fs:        tmp_path = os.path.join(json_Dir, file)        if not os.path.isdir(tmp_path):           file_path = tmp_path           List.append(file_path)           # print(‘文件: %s‘ % tmp_path)        else:            # print(‘文件夹:%s‘ % tmp_path)            traverse(tmp_path)    return List

if __name__=="__main__":    mongo_address = ‘127.0.0.1‘         #数据库地址    mongo_port = 27017                  #数据库端口    json_Path = ‘E:\Typhoon_data\Data‘  # json总文件夹地址    traverse(json_Path)                 #遍历文件夹,获取文件地址    for json_Filenum in range(len(List)):        loadFont(mongo_address, mongo_port, List[json_Filenum])   #载入mongo

原文地址:https://www.cnblogs.com/setname/p/8597357.html

时间: 2024-10-03 10:15:56

遍历win10文件夹并解析json文件,按照json格式存入mongo数据库(基于python 3.6)的相关文章

如何遍历文件夹下上亿文件而不溢出(转载)

序:一个文件夹下面有很多层的小文件,如何算出这个文件夹下面有多少文件?递归遍历,简单暴力,递归在一般情况确实是比较方便的解决方案,但是当文件夹深度多深,递归的反复调用会导致方法一直无法释放,造成jvm的栈溢出.那我们该怎么办? 原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/6031894.html 新浪微博:intsmaze刘洋洋哥 微信:intsmaze 说实话这个问题我以前也没有遇到过,我是听一位我很敬佩的IT前辈讲的他曾经的面试经历.他说他当时比较

如何遍历文件夹下上亿文件而不栈溢出

序:一个文件夹下面有很多层的小文件,如何算出这个文件夹下面有多少文件?递归遍历,简单暴力,递归在一般情况确实是比较方便的解决方案,但是当文件夹深度多深,递归的反复调用会导致方法一直无法释放,造成jvm的栈溢出.那我们该怎么办? 原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/6031894.html 新浪微博:intsmaze刘洋洋哥 微信:intsmaze 说实话这个问题我以前也没有遇到过,我是听一位我很敬佩的IT前辈讲的他曾经的面试经历.他说他当时比较

php高效遍历文件夹、高效读取文件

/** * PHP高效遍历文件夹 * @param string $path 目录路径 * @param integer $level 目录深度 */ function fn_scandir($path = './', $level = 0) { $file = new FilesystemIterator($path); $filename = ''; $prefix = ''; $url = ''; foreach ($file as $fileinfo) { $filename = $fi

遍历一个文件夹下的所有文件

一个老问题,但是总有人爱问,遍历一个文件夹下的所有文件,并输出文件信息. using System; using System.Collections.Generic; using System.ComponentModel;using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace IOTest { public partial class For

Java遍历文件夹下的所以文件

利用Java递归遍历文件夹下的所以文件,然后对文件进行其他的操作.如:对文件进行重命名,对某一类文件进行重编码.可以对某一工程下的全部.java文件进行转码成utf-8等 代码如下,这里只对文件进行重命名操作 1 package com.zhang.test; 2 3 import java.io.File; 4 5 public class getfilepath { 6 7 public static void main(String[] args) { 8 getDirectory(new

Java遍历一个文件夹下的全部文件

Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常使用的构造器有: 1.public File(String pathname){} 在pathname路径下创建文件对象 2.public File(String path,String name){} 在path參数指定的文件夹中创建具有给定名字的File对象.假设path为null,构造器将使用

利用java.io.File类实现遍历本地磁盘上指定盘符或文件夹的所有的文件

2016-11-18 这是本人的第一篇随笔博客,纠结了半天还是选择自己学的时候比较用心的一些知识点上.利用java.io.File类指定本地的文件夹进行遍历所有的文件. package org.lxm.filedemo; import java.io.File; import java.util.Scanner; /* * 本程序是将某个盘的所有文件夹及其文件全部调出来的操作 */ public class FileAllDemo { public static void main(String

C#遍历指定文件夹中的所有文件(转)

原文链接:http://www.cnblogs.com/qianqianfy/archive/2009/07/08/1518974.html 1. C#遍历指定文件夹中的所有文件 DirectoryInfo TheFolder=new DirectoryInfo(folderFullName); //---遍历文件夹 foreach(DirectoryInfo NextFolder in TheFolder.GetDirectories()) this.listBox1.Items.Add(Ne

cocos2d-x 如何读取遍历文件夹下的所有文件 (简单明了/童少无欺)

比如我要遍历Resources/music下面所有的文件 导入头文件 #include <sys/stat.h> #include "dirent.h" #include "unistd.h" 实现代码 std::string filePath = FileUtils::getInstance()->fullPathForFilename("music"); CCLOG("%s",filePath.c_str