差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
課題をさばく:dropboxで集めた課題と履修名簿から提出一覧を自動生成 [2019/11/13 08:32] – 作成 baba | 課題をさばく:dropboxで集めた課題と履修名簿から提出一覧を自動生成 [2019/11/13 15:00] (現在) – baba | ||
---|---|---|---|
行 14: | 行 14: | ||
| 0123456787 | | 0123456787 | ||
+ | 以下 ファイル構成は以下の通りとして、実行するprintList.pyはmember.csv(履修登録学籍番号が順番に一行ずつはいったもの) | ||
+ | < | ||
+ | └── 2019 | ||
+ | ├── kadai1 | ||
+ | ├── kadai2 | ||
+ | ├── kadai3 | ||
+ | ├── member.csv | ||
+ | ├── printList.py | ||
+ | </ | ||
+ | <file .py printList.py> | ||
+ | import os | ||
+ | import glob | ||
+ | import sys | ||
+ | import csv | ||
+ | |||
+ | args = sys.argv[1: | ||
+ | |||
+ | |||
+ | def getNumberList(_files): | ||
+ | number_list = [] | ||
+ | | ||
+ | for f in _files: | ||
+ | name_parent_directory = os.path.basename(os.path.dirname(os.path.abspath(f))) | ||
+ | filename = os.path.basename(f) | ||
+ | ftitle, text = os.path.splitext(filename) | ||
+ | number_list.append([name_parent_directory, | ||
+ | return number_list | ||
+ | |||
+ | |||
+ | # Get all student number based on submitted files. | ||
+ | number_list = getNumberList(args) | ||
+ | number_list.sort() | ||
+ | |||
+ | # Create a kind of kadai array. How many kadai is imposed today? | ||
+ | kind_of_parent_directory = [] | ||
+ | for f in args: | ||
+ | name_parent_directory = os.path.basename(os.path.dirname(os.path.abspath(f))) | ||
+ | kind_of_parent_directory.append(name_parent_directory) | ||
+ | |||
+ | # Create unique KADAI name as a list, such as kadai1, kadai2, | ||
+ | kind_of_parent_directory = list(set(kind_of_parent_directory)) | ||
+ | |||
+ | # Prepare for all result list | ||
+ | score_lists = [] | ||
+ | titles = [] | ||
+ | titles.append(" | ||
+ | for i in range(len(kind_of_parent_directory)): | ||
+ | titles.append(kind_of_parent_directory[i]) | ||
+ | score_lists.append(titles) | ||
+ | |||
+ | # Be sure to prepare all sutudents number on your class | ||
+ | f_csv = open(' | ||
+ | reader_csv = csv.reader(f_csv, | ||
+ | |||
+ | # Main | ||
+ | for r_csv in reader_csv: | ||
+ | score_list = [] | ||
+ | score_list.append(r_csv[0]) | ||
+ | for i in range(len(kind_of_parent_directory)): | ||
+ | count_submitted = 0 | ||
+ | for nl in number_list: | ||
+ | if int(r_csv[0]) == int(nl[1]) and kind_of_parent_directory[i] == nl[0]: | ||
+ | score_list.append(1) | ||
+ | count_submitted += 1 | ||
+ | if count_submitted != 1: | ||
+ | score_list.append(0) | ||
+ | score_lists.append(score_list) | ||
+ | |||
+ | # print result on standart output. | ||
+ | for list in score_lists: | ||
+ | count = 0 | ||
+ | for value in list: | ||
+ | if count != len(list) -1: | ||
+ | print str(value)+",", | ||
+ | else: | ||
+ | print str(value) | ||
+ | count += 1 | ||
+ | </ | ||