【问题标题】:Django dumpdata doesn't write to file, generate "Bad file descriptor" errorDjango 转储数据不写入文件,生成“错误的文件描述符”错误
【发布时间】:2012-10-03 14:10:21
【问题描述】:

我正在尝试将数据转储到文件中,并不断收到此错误:

d:\django\mysite>manage.py dumpdata > alldata.json
Traceback (most recent call last):
  File "D:\django\mysite\manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 241, in execute
    self.stdout.write(output)
IOError: [Errno 9] Bad file descriptor

我感觉这与代码页或 unicode 有关。 尝试在 PowerShell 中执行此操作,没有错误,但数据已打印到屏幕上,文件为空...(好像 > 符号不存在)。

有人知道是什么原因造成的吗?

提前致谢:)

【问题讨论】:

  • 您的 Bad file descriptor 消息来自 Python 代码,因此它似乎在输出设置之前或期间遇到了该错误。如果&gt; alldata.json 是问题所在,您会看到错误来自shell。我建议您尝试运行不带&gt; 的命令以查看错误发生的位置。
  • 谢谢。使用 > 重定向运行不会导致任何错误。数据只是简单地打印在屏幕上。请看下面的答案,这与直接在命令提示符下执行脚本有关。

标签: django manage.py dumpdata


【解决方案1】:

如果我没记错的话,你正在使用

manage.py dumpdata

尝试像这样使用它

python manage.py dumpdata

它应该可以工作。

谢谢

【讨论】:

  • 谢谢!!那成功了!你能解释一下这两种方法的区别吗?
  • @MotiRadomski 很简单,在文件名之前使用 python 命令意味着使用 python 解释器执行它。 Django是一个用python编写的框架。
  • 谢谢。当然可以,但是运行 c:\>myscript.py 和 c:\>python myscript.py 有什么区别?在我的 win 注册表中,我看到 .py 文件无论如何都注册到了 python.exe ......奇怪的东西 :)
  • 哦,你使用的是 windows,对不起,我是 linux 用户 :)
  • 如果这行得通,这意味着你的 shell PATH 上的 python 可执行文件与与 .py 文件关联的默认 python 可执行文件不同,所以当你明确告诉它使用 python 运行管理时.py 命令,您是在告诉它使用在您的 shell PATH 中找到的那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多