【问题标题】:Issue trying to pass file as an argument to a custom management command尝试将文件作为参数传递给自定义管理命令时出现问题
【发布时间】:2023-03-12 13:53:01
【问题描述】:

这是我的代码:

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 似乎是正确的。关于我做错了什么有什么想法吗?

【问题讨论】:

标签: python linux django


【解决方案1】:

例子:

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

【讨论】:

  • 刚刚实现了这个答案,使用 Django 2.0.3 参数类型是 str parser.add_argument('--file', type=str)
  • 我不确定type=file 以前是否有效,但现在无效。如果您尝试获取文件名,请使用type=str
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 2021-04-23
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
相关资源
最近更新 更多