インポートのサポート形式はchild;parent
なので、私はディレクトリツリー構造を実装しており、この構造のインポートを "奇妙な方法"でサポートしているひどいシステムで作業しています。 インポート制約:
- 子項目が一意の名前
を持っている必要があります - 親項目が重複している場合、子供が最初の親の下にインポートされますがpythonツリーのディレクトリ一意の名前、ツリーのアルゴリズム
が
どうroot
|-- A
| |-- aa
| | |-- cc
| | `-- dd
| `-- bb
| `-- ee
`-- B
|-- aa
| |-- cc
| `-- dd
`-- bb
`-- FF
を作成するディレクトリの以下の構造を有すると仮定しました
child;parent
root
A;root
aa;A
cc;aa
dd;aa
bb;A
ee;bb
B;root
aa;B <-- duplicated child item does not work
cc;aa <-- duplicated entry - system saves it under A instead of under B
dd;aa <-- duplicated entry - system saves it under A instead of under B
bb;B
FF;bb <-- system saves it under A instead of under B
間違った表現を生成するデフォルトのインポートの外観です。私は(システム要件に合うように短い名前など)を一意の文字列で=id
+追加の変更をすべてのフォルダの名前を変更することを決定し、この問題に取り組むためにepresentation
root
|-- A
| |-- aa
| | |-- cc
| | `-- dd
| `-- bb
| |-- FF
| `-- ee
`-- B
`-- aa
|-- cc
`-- dd
とシステムにインポートしたが、その後、データベースを経由して=id
を削除しました。
は、インポートのペアは次のようになります。
child;parent
root;
A==1;root=0
aa=2;A=1
cc=3;aa=2
dd=4;aa=2
bb=5;A=1
ee=7;bb=3
B=8;root=0
aa=9;B=8
cc=10;aa=9
dd=11;aa=9
bb=12;B=8
FF=13;bb=12
そして
root=0
|-- A=1
| |-- aa=2
| | |-- cc=3
| | `-- dd=4
| `-- bb=5
| `-- ee=7
`-- B=8
|-- aa=9
| |-- cc=10
| `-- dd=11
`-- bb=12
`-- FF=13
を必要に応じて、私はそれの名前を変更せずに元の構造と連携することが必要と協力する必要があるしかし構造があります。
私はツリー構造を使って構造体をメモリ上に保つことができると考えていましたが、私は実装に固執しました。
私はos.walk('root')
とtreelib
を使いたかったのですが、これを実装するのに助けが必要です。
すべてのヒントを高く評価します。 ありがとう
がマン、私は前にこのアプローチを試みたが、私は限界にも多くの開発者を見つけありがとうを私に言うことができませんでした..そして、私はこのくそを支える役割を果たしています。 私はtreelibでその方法を見つけました。私は後で解決策を投稿します – oglop