Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于ruby、python或node.js脚本中的文件结构创建JSON_Python_Ruby_Json_Node.js - Fatal编程技术网

基于ruby、python或node.js脚本中的文件结构创建JSON

基于ruby、python或node.js脚本中的文件结构创建JSON,python,ruby,json,node.js,Python,Ruby,Json,Node.js,我有文件夹结构,我想根据根文件夹中的文件夹名和文件树中下面的文件创建JSON对象。文件名结构良好,如下所示: objectNNN.xyz 其中NNN是一个像001,002这样的数字。。。xyz可以是.png、.jpg、.eps或.mp3 文件夹结构如下(输入到脚本): 果实 图像 apple001.jpg apple002.jpg apple003.jpg 橙色001.jpg 橙色002.png 橙色03.jpg 听起来 apple001.mp3 apple002.mp3 橙子001.

我有文件夹结构,我想根据根文件夹中的文件夹名和文件树中下面的文件创建JSON对象。文件名结构良好,如下所示:

objectNNN.xyz
其中NNN是一个像001,002这样的数字。。。xyz可以是.png、.jpg、.eps或.mp3

文件夹结构如下(输入到脚本):

果实

  • 图像

    • apple001.jpg
    • apple002.jpg
    • apple003.jpg
    • 橙色001.jpg
    • 橙色002.png
    • 橙色03.jpg
  • 听起来

    • apple001.mp3
    • apple002.mp3
    • 橙子001.mp3
动物

  • 。。。等
食物

  • 。。。等
。。。基于这个文件夹结构,我想阅读所有的“集合”(水果、动物等),并为每个集合创建一个JSON对象,如下所示:(注意,“word”键取自images目录中的所有对象名称)


这个问题的定义相当模糊,但这是我解释你想要什么的最好办法。将此扩展到添加文件路径和更多项目组,留给读者作为练习

from re import split
from itertools import groupby, izip

fruits = set(["apple", "pear"])
animals = set(["bear", "cat"])

json_structure = {}

text_input = ["apple001.png", "apple002.jpg", "bear001.png", "pear001.png", "cat001.png"]

def check(filename):
"""Checks which group a filename is in and returns an integer for ordering"""
    n = split(r'[0-9]', filename)[0]
    if n in fruits:
        return 0
    else:
        return 1


grouped = groupby(sorted(text_input, key=check), key=check)

for objects, object_type in izip(grouped, ["fruits", "animals"]):
    items = objects[1]
    json_structure[object_type] = list(items)

print json_structure

我只是想知道最好的方法是什么。这很有帮助,虽然不是我想要的。。。我已将其范围直接限定到Node.js,并澄清了我在这里寻找的内容:
from re import split
from itertools import groupby, izip

fruits = set(["apple", "pear"])
animals = set(["bear", "cat"])

json_structure = {}

text_input = ["apple001.png", "apple002.jpg", "bear001.png", "pear001.png", "cat001.png"]

def check(filename):
"""Checks which group a filename is in and returns an integer for ordering"""
    n = split(r'[0-9]', filename)[0]
    if n in fruits:
        return 0
    else:
        return 1


grouped = groupby(sorted(text_input, key=check), key=check)

for objects, object_type in izip(grouped, ["fruits", "animals"]):
    items = objects[1]
    json_structure[object_type] = list(items)

print json_structure