質問編集履歴

1

ソースコードを追記しました

2020/03/27 03:48

投稿

groggy_egg
groggy_egg

スコア24

test CHANGED
File without changes
test CHANGED
@@ -12,6 +12,92 @@
12
12
 
13
13
  それ以外はプロジェクト作成時の初期状態
14
14
 
15
+ ```C#
16
+
17
+ public class CallPython : MonoBehaviour
18
+
19
+ {
20
+
21
+ private void Start()
22
+
23
+ {
24
+
25
+ string FS = Path.DirectorySeparatorChar.ToString();//ファイルセパレーター
26
+
27
+ //pythonがある場所
28
+
29
+ string pyExePath = @"C:\Users***\AppData\Local\Programs\Python\Python38\python.exe";
30
+
31
+ //ファイルのパス
32
+
33
+ string ResourcesPath = Application.dataPath + FS + "Resources";
34
+
35
+ //実行したいスクリプトがある場所
36
+
37
+ string test = @"test.py";
38
+
39
+ string args = ResourcesPath + FS + test;
40
+
41
+
42
+
43
+ //外部プロセスの設定
44
+
45
+ ProcessStartInfo processStartInfo = new ProcessStartInfo()
46
+
47
+ {
48
+
49
+ FileName = pyExePath, //実行するファイル(python)
50
+
51
+ UseShellExecute = false,//シェルを使うかどうか
52
+
53
+ CreateNoWindow = true, //ウィンドウを開くかどうか
54
+
55
+ RedirectStandardOutput = true, //テキスト出力をStandardOutputストリームに書き込むかどうか
56
+
57
+ Arguments = args //実行するスクリプト 引数(複数可)
58
+
59
+ };
60
+
61
+
62
+
63
+ print("start");
64
+
65
+ //外部プロセスの開始
66
+
67
+ Process process = Process.Start(processStartInfo);
68
+
69
+
70
+
71
+ //ストリームから出力を得る
72
+
73
+ StreamReader streamReader = process.StandardOutput;
74
+
75
+ string str = streamReader.ReadLine();
76
+
77
+
78
+
79
+ //外部プロセスの終了
80
+
81
+ process.WaitForExit();
82
+
83
+ process.Close();
84
+
85
+ print(str);
86
+
87
+
88
+
89
+ //実行
90
+
91
+ print("end");
92
+
93
+ }
94
+
95
+
96
+
97
+ }
98
+
99
+ ```
100
+
15
101
 
16
102
 
17
103
  ***Python側の処理***
@@ -36,11 +122,93 @@
36
122
 
37
123
  出力は、20文字程度×20行程度の日本語文字列です
38
124
 
39
-
125
+ ```python
126
+
40
-
127
+ class PTDic:
128
+
41
-
129
+ def __init__(self):
130
+
42
-
131
+ cur = path.dirname(__file__)
132
+
133
+ self.dicpath = path.join(cur,'./dic/pth-utf8.csv')
134
+
135
+ self.framepath = path.join(cur,'./dic/frames-utf8.csv')
136
+
137
+ self.encoding='utf-8-sig'
138
+
139
+
140
+
141
+ # csv から対象のデータを検索
142
+
143
+ def searchPT(self,lemma):
144
+
145
+ rslt=[]
146
+
147
+ with open(self.dicpath,'r',encoding=self.encoding) as f:
148
+
149
+ # ヘッダーの取得
150
+
151
+ header=next(f)
152
+
153
+ header=header.replace('\"','') # ""除去
154
+
155
+ header=header.split(',') # ,区切り
156
+
157
+ for r in header:
158
+
159
+ # ""を除去
160
+
161
+ r=r.replace('\"','')
162
+
163
+ r=r.replace('\n','') # 改行文字除去
164
+
165
+ rslt.append(header)
166
+
167
+ # データの取得
168
+
169
+ reader = csv.reader(f)
170
+
171
+ for row in reader:
172
+
173
+ if row[2]==lemma:
174
+
175
+ #print(row[2])
176
+
177
+ for r in row:
178
+
179
+ # ""を除去
180
+
181
+ r=r.replace('\"','')
182
+
183
+ rslt.append(row)
184
+
185
+ if len(rslt)>0:
186
+
187
+ # csvのリストデータを辞書に変換
188
+
189
+ rslt=self.list2dic(rslt)
190
+
191
+ return rslt
192
+
193
+
194
+
195
+ if __name__ == '__main__':
196
+
197
+ ptd=PTDic()
198
+
199
+ rslt=ptd.searchPT('運ぶ')
200
+
201
+ pprint(rslt)
202
+
203
+
204
+
205
+ ```
206
+
207
+
208
+
209
+
210
+
43
- 試しに、Process.Start()の前にprint("start")したり
211
+ 試しに、C#側でProcess.Start()の前にprint("start")したり
44
212
 
45
213
  WaitForExit()の前にprint(str)で結果を出力しようともしたのですが
46
214