我遇到file()
内置的奇怪行为。我使用unittest-xml-reporting Python包为我的单元测试生成结果。以下是打开文件进行写入的行,一个(显然不存在)的文件:
report_file = file('%s%sTEST-%s.xml' % \
(test_runner.output, os.sep, suite), 'w')
(代码来自软件包' s Github page)
但是,我收到以下错误:
...
File "/home/[...]/django-cms/.tox/pytest/local/lib/python2.7/site-packages/xmlrunner/__init__.py", line 240, in generate_reports
(test_runner.output, os.sep, suite), 'w')
IOError: [Errno 2] No such file or directory: './TEST-cms.tests.page.NoAdminPageTests.xml'
我发现这很奇怪,因为正如Python文档所述,如果使用w
模式,如果文件不存在,则应该创建该文件。为什么会发生这种情况?我该如何解决这个问题?
答案 0 :(得分:2)
来自man 2 read
ENOENT O_CREAT is not set and the named file does not exist. Or, a
directory component in pathname does not exist or is a dangling
symbolic link.
选择:)
以人的方式:
./
在运行此命令时被删除./TEST-cms.tests.page.NoAdminPageTests.xml
存在,但是指向无处的符号链接file
builtin 答案 1 :(得分:2)
file
将创建一个文件,但不会创建目录。您必须先创建它,如here
答案 2 :(得分:0)
似乎尝试在已经删除的目录中创建需要创建的文件(因为路径是.
,并且很可能该目标已被删除了)。
我设法通过提供test_runner.output
的绝对路径来修复此问题,并且现在已成功创建结果文件。