差分
このページの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 | ||
| + | </ | ||