我有一个CSV文件,其中包含要使用Django自定义管理命令中的自定义命令导入的数据。我使用的是python2.7和django1.10。这是密码。在
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))
是的,家庭空间是硬编码的。我宁愿从文件名(它是'hr12c.csv')中提取这个值,但我不知道该怎么做。但这不是真正的问题。当我用以下命令运行上面的代码时:python管理.pyimportsv“awards/12C.csv”我收到以下错误:
^{pr2}$我不知道我做错了什么。它似乎认为我会给它一个清单,但是。。。我看不到任何可能的名单。你知道我做错了什么吗?在
如果只传递一个参数,请将
nargs='+'
更改为nargs='?'
,以避免处理列表。在那么解析器返回的
options['csvfile']
对象已经是TextIOWrapper
,不需要再次打开它。在你可以用这种方式来实现你想要的:
相关问题 更多 >
编程相关推荐