teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

変数名変更

2020/03/03 08:39

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -66,25 +66,25 @@
66
66
  ```python
67
67
  for dir in files_dir:
68
68
  mocfiles = glob.glob('./live2D/' + str(dir) + '/**/*.moc')
69
- model_entry = str(mocfiles)[len(dir) + 13:-2].replace('\', '/')
69
+ model_value = str(mocfiles)[len(dir) + 13:-2].replace('\', '/')
70
70
 
71
71
  phyfiles = glob.glob('./live2D/' + str(dir) + '/**/*physics.json')
72
- physics_entry = str(phyfiles)[len(dir) + 13:-2].replace('\', '/')
72
+ physics_vslue = str(phyfiles)[len(dir) + 13:-2].replace('\', '/')
73
73
 
74
74
  mtnfiles = glob.glob('./live2D/' + str(dir) + '/**/*.mtn')
75
- motions_idle_entry = [{"file": str(mtn)[len(dir) + 10:].replace('\', '/')} for mtn in mtnfiles]
75
+ motions_idle_value = [{"file": str(mtn)[len(dir) + 10:].replace('\', '/')} for mtn in mtnfiles]
76
76
 
77
77
  dic = {
78
78
  "name": "Live2D",
79
- "model": model_entry,
79
+ "model": model_value,
80
80
  "textures": [
81
81
  "Texture2D/texture_00.png"
82
82
  ],
83
83
  "motions": {
84
- "idle": motions_idle_entry,
84
+ "idle": motions_idle_value,
85
85
  "tap": [{"name": 0, "file": 0}]},
86
86
  "expressions": [{"name": 0, "file": 0}],
87
- "physics": physics_entry,
87
+ "physics": physics_value,
88
88
  "lip_sync": "true"
89
89
  }
90
90
  (略)

5

追記

2020/03/03 08:39

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -58,4 +58,35 @@
58
58
  print(json.dumps(dic, ensure_ascii=False, indent=4, sort_keys=False, separators=(',', ': ')))
59
59
  ```
60
60
 
61
- `dic["motions"]["idle"]`を空リストで用意しておいて、**新しい辞書**をappendしていけばいいのでは。
61
+ `dic["motions"]["idle"]`を空リストで用意しておいて、**新しい辞書**をappendしていけばいいのでは。
62
+
63
+ ----
64
+
65
+ というかこの感じなら
66
+ ```python
67
+ for dir in files_dir:
68
+ mocfiles = glob.glob('./live2D/' + str(dir) + '/**/*.moc')
69
+ model_entry = str(mocfiles)[len(dir) + 13:-2].replace('\', '/')
70
+
71
+ phyfiles = glob.glob('./live2D/' + str(dir) + '/**/*physics.json')
72
+ physics_entry = str(phyfiles)[len(dir) + 13:-2].replace('\', '/')
73
+
74
+ mtnfiles = glob.glob('./live2D/' + str(dir) + '/**/*.mtn')
75
+ motions_idle_entry = [{"file": str(mtn)[len(dir) + 10:].replace('\', '/')} for mtn in mtnfiles]
76
+
77
+ dic = {
78
+ "name": "Live2D",
79
+ "model": model_entry,
80
+ "textures": [
81
+ "Texture2D/texture_00.png"
82
+ ],
83
+ "motions": {
84
+ "idle": motions_idle_entry,
85
+ "tap": [{"name": 0, "file": 0}]},
86
+ "expressions": [{"name": 0, "file": 0}],
87
+ "physics": physics_entry,
88
+ "lip_sync": "true"
89
+ }
90
+ (略)
91
+ ```
92
+ と構築するかな、と思いました。

4

文字数制限? かもしれないので省略

2020/03/03 08:24

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -13,27 +13,7 @@
13
13
  ... "motions":{
14
14
  ... "idle":[
15
15
  ... {"file":"../motion/angry01.mtn"},
16
- ... {"file":"../motion/angry02.mtn"},
17
- ... {"file":"../motion/bye01.mtn"},
18
- ... {"file":"../motion/cry01.mtn"},
19
- ... {"file":"../motion/idle01.mtn"},
20
- ... {"file":"../motion/idle02.mtn"},
21
- ... {"file":"../motion/kime01.mtn"},
22
- ... {"file":"../motion/nf01.mtn"},
16
+ (略)
23
- ... {"file":"../motion/nf02.mtn"},
24
- ... {"file":"../motion/nf03.mtn"},
25
- ... {"file":"../motion/nf04.mtn"},
26
- ... {"file":"../motion/nf05.mtn"},
27
- ... {"file":"../motion/nf_left01.mtn"},
28
- ... {"file":"../motion/nf_right01.mtn"},
29
- ... {"file":"../motion/pui01.mtn"},
30
- ... {"file":"../motion/sad01.mtn"},
31
- ... {"file":"../motion/serious01.mtn"},
32
- ... {"file":"../motion/shame01.mtn"},
33
- ... {"file":"../motion/smile01.mtn"},
34
- ... {"file":"../motion/smile02.mtn"},
35
- ... {"file":"../motion/smile03.mtn"},
36
- ... {"file":"../motion/sneeze01.mtn"},
37
17
  ... {"file":"../motion/surprised01.mtn"}
38
18
  ... ]
39
19
  ... }
@@ -42,28 +22,7 @@
42
22
  >>> pprint(d)
43
23
  {'model': 'XXX.moc',
44
24
  'motions': {'idle': [{'file': '../motion/angry01.mtn'},
45
- {'file': '../motion/angry02.mtn'},
46
- {'file': '../motion/bye01.mtn'},
47
- {'file': '../motion/cry01.mtn'},
48
- {'file': '../motion/idle01.mtn'},
49
- {'file': '../motion/idle02.mtn'},
50
- {'file': '../motion/kime01.mtn'},
51
- {'file': '../motion/nf01.mtn'},
52
- {'file': '../motion/nf02.mtn'},
53
- {'file': '../motion/nf03.mtn'},
54
- {'file': '../motion/nf04.mtn'},
55
- {'file': '../motion/nf05.mtn'},
56
- {'file': '../motion/nf_left01.mtn'},
57
- {'file': '../motion/nf_right01.mtn'},
58
- {'file': '../motion/pui01.mtn'},
59
- {'file': '../motion/sad01.mtn'},
60
- {'file': '../motion/serious01.mtn'},
61
- {'file': '../motion/shame01.mtn'},
62
- {'file': '../motion/smile01.mtn'},
63
- {'file': '../motion/smile02.mtn'},
64
- {'file': '../motion/smile03.mtn'},
65
- {'file': '../motion/sneeze01.mtn'},
66
- {'file': '../motion/surprised01.mtn'}]},
25
+ (略) {'file': '../motion/surprised01.mtn'}]},
67
26
  'textures': ['XXX.png']}
68
27
  ```
69
28
 

3

追記

2020/03/03 08:17

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -73,4 +73,30 @@
73
73
  > ですが, "motions"以下のグループを書き出す際, Pythonの辞書配列では同階層に同じキーは存在することが出来ないため, 要素編集や辞書連結等を使って順々にキーを書き足していくことができず
74
74
 
75
75
  この部分で、具体的にどういうコードを書いて何が起こったのかを書きましょう。
76
- **あなたがなにをしたのかまったく伝わりません。**
76
+ **あなたがなにをしたのかまったく伝わりません。**
77
+
78
+ ----
79
+ `"tap"`がわからないので手を付けませんが、"idle"はこうじゃないですか?
80
+
81
+ ```python
82
+ for dir in files_dir :
83
+ # dic = {"name":"Live2D","model":"moc/Live2D.moc","textures":["Texture2D/texture_00.png"],"motions":{"idle":[{"name":0,"file":0}],"tap":[{"name":0,"file":0}]},"expressions":[{"name":0,"file":0}],"physics":"physics/physics.json","lip_sync":"true"}
84
+ dic = {"name":"Live2D","model":"moc/Live2D.moc","textures":["Texture2D/texture_00.png"],"motions":{"idle":[],"tap":[{"name":0,"file":0}]},"expressions":[{"name":0,"file":0}],"physics":"physics/physics.json","lip_sync":"true"}
85
+
86
+ mocfiles = glob.glob('./live2D/'+str(dir)+'/**/*.moc')
87
+ dic["model"] = str(mocfiles)[len(dir)+13:-2].replace('\','/')
88
+ phyfiles = glob.glob('./live2D/'+str(dir)+'/**/*physics.json')
89
+ dic["physics"] = str(phyfiles)[len(dir)+13:-2].replace('\','/')
90
+
91
+ mtnfiles = glob.glob('./live2D/'+str(dir)+'/**/*.mtn')
92
+
93
+ for mtn in mtnfiles:
94
+ # dic["motions"]["idle"] が list
95
+ dic["motions"]["idle"].append({"file":str(mtn)[len(dir)+10:].replace('\','/')})
96
+
97
+ with open (r"./Live2D/"+dir+"/model.json","w") as f:
98
+ f.write(json.dumps(dic, ensure_ascii=False, indent=4, sort_keys=False, separators=(',', ': ')))
99
+ print(json.dumps(dic, ensure_ascii=False, indent=4, sort_keys=False, separators=(',', ': ')))
100
+ ```
101
+
102
+ `dic["motions"]["idle"]`を空リストで用意しておいて、**新しい辞書**をappendしていけばいいのでは。

2

意図を明確にした

2020/03/03 08:15

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -67,7 +67,8 @@
67
67
  'textures': ['XXX.png']}
68
68
  ```
69
69
 
70
+ リテラルとして表現可能なオブジェクトである以上、Pythonの辞書で表現できないわけがありません。
70
- あなたが何困っているのかわかりません
71
+ 純粋コードに問題あるだけです
71
72
 
72
73
  > ですが, "motions"以下のグループを書き出す際, Pythonの辞書配列では同階層に同じキーは存在することが出来ないため, 要素編集や辞書連結等を使って順々にキーを書き足していくことができず
73
74
 

1

些細

2020/03/03 07:39

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  質問がわかりません。
4
4
 
5
- `"idle"`要素(array)の最初のデータの末尾に`,`が抜けていますが、これ自体普通にPythonのオブジェクトとして解釈可能す。
5
+ `"idle"`要素(array)の最初のデータの末尾に`,`が抜けていますが、さえ修正してしまえば、これ自体普通にPythonのオブジェクトとして解釈可能なコードになっています。
6
6
 
7
7
  ```
8
8
  >>> d = {