私は、Djangoカスタム管理コマンドからカスタムコマンドを使用してインポートしたいデータを持つCSVファイルを持っています。私はPython 2.7とDjango 1.10を使用しています。ここにコードがあります。djangoのカスタム管理コマンドでFileTypeを使用していますか?
import csv
import argparse
from awards.models import Student, HomeRoom
from django.core.management.base import BaseCommand, CommandError
homeroom = 'HR 12C'
class Command(BaseCommand):
help = "Import students by homeroom."
def add_arguments(self, parser):
parser.add_argument('csvfile', nargs='+', type=argparse.FileType('r'))
def handle(self, *args, **options):
student_list = []
hr = HomeRoom.objects.get(name=homeroom)
with open(options['csvfile']) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
student_list.append(Student(name=row["Student Name"], studentidnum=row["School ID"], homeroom=hr))
ええ、ホームルームはハードコードされています。私はむしろファイル名(それは 'HR 12C.csv')からその値を引き出すだろうが、私はそれを行う方法がわからない。しかし、それは本当の問題ではありません。私は、このコマンドを使用して上記のコードを実行すると:のpython manage.py importcsv「賞/ 12C.csv」私は次のエラーを取得する:
File "/home/ssidollars/dollars/awards/management/commands/importcsv.py", line 18, in handle
with open(options['csvfile']) as csvfile:
TypeError: coercing to Unicode: need string or buffer, list found
私は私が間違ってやっている見当がつかない。それは私がそれをリストを渡していると思うと思うようですが、私はそれができるリストを見ません。私が間違っていることは何ですか?
おかげで、。私はargparseを使ったことは一度もなく、例は私を混乱させていたので、何が起こっているのか分からなかった。コードは完全に実行されました。 – Jonathanb