尝试将文件作为参数传递给自定义管理命令的问题
这是我的代码:
from django.core.management.base import BaseCommand, CommandError
import sys, os, shutil
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--file', nargs='1', type=str)
def handle(self, *args, **options):
lists_file = options['file']
但是,当我尝试用以下命令运行时:
./manage.py: error: no such option: --file=test_lists.txt
我遇到了一个错误:
Usage: ./manage.py create_test_lists [options]
./manage.py: error: no such option: --file
我已经确认test_lists.txt文件和manage.py在同一个文件夹里。此外,我的命令文件位于my_app/management/commands/create_test_lists.py,看起来也没问题。你们觉得我哪里出错了?
1 个回答
4
- 如果只有一个参数,就不需要用
nargs
。 - 可以用
argparse.FileType
来代替str
。 - 更多信息可以查看 这个链接。
示例:
import argparse
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--file', type=argparse.FileType('r'))
def handle(self, *args, **options):
lists_file = options['file']