尝试将文件作为参数传递给自定义管理命令的问题

8 投票
1 回答
4250 浏览
提问于 2025-04-18 18:18

这是我的代码:

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']

撰写回答