回答編集履歴
3
修正
test
CHANGED
@@ -20,11 +20,11 @@
|
|
20
20
|
|
21
21
|
全体的に整理するならば以下のようになるでしょうか。
|
22
22
|
|
23
|
-
・write_data関数で
|
23
|
+
・write_data関数で引数をリストから辞書にしています。.writerowに辞書を渡せば自動的にキーをヘッダと紐付けて書き込めます。
|
24
24
|
|
25
25
|
・openでmode='a'を指定して、ファイルが存在しない場合は、自動的にファイルが新規作成されます。これで行を減らせます。
|
26
26
|
|
27
|
-
ただしヘッダの書き込みをファイルの新規作成時のみに限定する場合は、下記のように既存ファイルの有無をチェックする必要があります。
|
27
|
+
ただしヘッダの書き込みをファイルの新規作成時のみに限定する場合は、下記(is_new_fileの部分)のように既存ファイルの有無をチェックする必要があります。
|
28
28
|
|
29
29
|
|
30
30
|
|
@@ -71,6 +71,8 @@
|
|
71
71
|
if is_new_file:
|
72
72
|
|
73
73
|
writer.writeheader()
|
74
|
+
|
75
|
+
# 結果をファイルに書き込む
|
74
76
|
|
75
77
|
writer.writerow(result)
|
76
78
|
|
@@ -142,6 +144,8 @@
|
|
142
144
|
|
143
145
|
|
144
146
|
|
147
|
+
# 結果を書き込む
|
148
|
+
|
145
149
|
write_data(result)
|
146
150
|
|
147
151
|
|
2
追記
test
CHANGED
@@ -13,3 +13,143 @@
|
|
13
13
|
(以下略)
|
14
14
|
|
15
15
|
```
|
16
|
+
|
17
|
+
--------------------------
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
全体的に整理するならば以下のようになるでしょうか。
|
22
|
+
|
23
|
+
・write_data関数で辞書をリストから引数にしています。.writerowに辞書を渡せば自動的にキーをヘッダと紐付けて書き込めます。
|
24
|
+
|
25
|
+
・openでmode='a'を指定して、ファイルが存在しない場合は、自動的にファイルが新規作成されます。これで行を減らせます。
|
26
|
+
|
27
|
+
ただしヘッダの書き込みをファイルの新規作成時のみに限定する場合は、下記のように既存ファイルの有無をチェックする必要があります。
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
```
|
32
|
+
|
33
|
+
import csv
|
34
|
+
|
35
|
+
import os
|
36
|
+
|
37
|
+
import datetime
|
38
|
+
|
39
|
+
import speedtest
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
# 計測結果を記述するCSVファイル作成/追記
|
44
|
+
|
45
|
+
# 引数にDate, Time, Download, Uploadをキーに持つ辞書を受け取る。
|
46
|
+
|
47
|
+
def write_data(result):
|
48
|
+
|
49
|
+
f_name = 'SpeedTest.csv'
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
# SpeedTest.csvが新規ファイルかどうかを表すフラグ
|
54
|
+
|
55
|
+
is_new_file = False if os.path.exists(f_name) else True
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
# speedTest.csvを作成し、計測結果を記載
|
60
|
+
|
61
|
+
# ファイルがない場合は新規作成され、ファイルが存在する場合は追記される。
|
62
|
+
|
63
|
+
with open(f_name, 'a', newline='') as csv_file:
|
64
|
+
|
65
|
+
# フィールドは、「計測日(YYYY/MM/DD)」「計測実施時間(HH:MM)」「Download速度」「Upload速度」
|
66
|
+
|
67
|
+
writer = csv.DictWriter(csv_file, fieldnames=result.keys())
|
68
|
+
|
69
|
+
# SpeedTest.csvが新規ファイルの場合のみ、ヘッダを書き込む
|
70
|
+
|
71
|
+
if is_new_file:
|
72
|
+
|
73
|
+
writer.writeheader()
|
74
|
+
|
75
|
+
writer.writerow(result)
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
def get_speed_test():
|
82
|
+
|
83
|
+
servers = [28910, 20976]
|
84
|
+
|
85
|
+
stest = speedtest.Speedtest()
|
86
|
+
|
87
|
+
stest.get_servers(servers)
|
88
|
+
|
89
|
+
stest.get_best_server()
|
90
|
+
|
91
|
+
return stest
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
def command_line_runner():
|
98
|
+
|
99
|
+
# 「計測日(YYYY/MM/DD)」「計測実施時間(HH:MM)」を設定
|
100
|
+
|
101
|
+
tmp_day = datetime.date.today()
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
# 計測日(YYYY/MM/DD)
|
106
|
+
|
107
|
+
date_str = tmp_day.strftime('%Y/%m/%d')
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
# 計測実施時間(HH:MM)
|
112
|
+
|
113
|
+
time_str = tmp_day.strftime('%H:%M')
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
# 速度を計測する。
|
118
|
+
|
119
|
+
stest = get_speed_test()
|
120
|
+
|
121
|
+
down_result = stest.download()
|
122
|
+
|
123
|
+
up_result = stest.upload()
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
# 「計測日(YYYY/MM/DD)」「計測実施時間(HH:MM)」「Download速度」「Upload速度」の
|
128
|
+
|
129
|
+
# 計測結果をresult 変数に格納
|
130
|
+
|
131
|
+
result = {
|
132
|
+
|
133
|
+
"Date": date_str,
|
134
|
+
|
135
|
+
"Time": time_str,
|
136
|
+
|
137
|
+
"Download": int(down_result / 1024 /1024),
|
138
|
+
|
139
|
+
"Upload": int(up_result / 1024 /1024)
|
140
|
+
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
write_data(result)
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
print(result)
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
command_line_runner()
|
154
|
+
|
155
|
+
```
|
1
f
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
get_Speed_File関数でリストを
|
1
|
+
get_Speed_File関数でspeedDataという名前で受け取ったリストを、各変数に分解してください。
|
2
2
|
|
3
3
|
```
|
4
4
|
|
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
f_name = 'SpeedTest.csv'
|
10
10
|
|
11
|
-
date_str , time_str, mbps_down_result, mbps_up_result = speedData # <=====こ
|
11
|
+
date_str , time_str, mbps_down_result, mbps_up_result = speedData # <=====この行を追加
|
12
12
|
|
13
13
|
(以下略)
|
14
14
|
|