Я полагаю, что решением может быть использование Python's os.walk ()
Эта функция может использоваться следующим образом:
from os import walk
def add_node(root, elem):
query = 'MATCH (r: Directory {{name: "{0}"}})\
CREATE (e: Directory {{name: "{1}")\
CREATE (r)-[l: CONTAINS]->(e)\
RETURN id(e), id(l)'.format(root, elem)
# Run the query with your driver instance here
# Add the node for root here
for root, dirs, files in os.walk(your_dynamic_path, topdown = False):
for dir in dirs:
add_node(root, dir)
for file in files:
add_node(root, file)
С add_node(root, elem)
будучи функцией добавления / объединения элемента node в ваш граф Neo4J и добавления требуемого отношения.