我有一个有趣的问题,我正在努力解决。我有一个很大的程序,在这个程序的一部分,我制作了一个.xml文件并写入其中(只使用字符串,不使用lxml或其他任何东西)。我把那个特定的代码放到它自己的程序中进行测试,结果遇到了一个问题。代码是
import os
directory = 'FileDirectory'
name = 'Test File.xml'
if not os.path.exists('K:\\JOBS\\' + directory + '\\XML Files\\'):
os.makedirs('K:\\JOBS\\' + directory + '\\XML Files\\')
xmlJob = open('K:\\JOBS\\' + directory + '\\XML Files\\' + name, 'w')
try:
xmlJob.write('Test write')
except:
print "Unexpected error:", sys.exc_info()[0]
raise
xmlJob.close
代码一直运行,没有给我任何错误,except不会触发,但是当文件被生成时,其中没有写入任何内容。另外,如果不先关闭Python,我就不能删除文件,因此.close似乎也不会发生。但是如果我把print语句放在.write和.close之后,它们都会触发,所以程序应该会命中所有行。上面的文字是整个程序,所以没有其他东西可以搅乱它。在
现在,当我改为使用一切正常。所以代码
^{pr2}$运行良好。显然我可以用with代替open和.close,但是现在我想弄清楚第一个选项失败的原因。我已经在其他程序中使用了几乎完全相同的代码来写日志文件之类的,然后它就起作用了。有人有什么想法吗?在
通过键入
xmlJob.close
可以引用xmlJob对象上的类方法close
,但不调用它。在注意以下事项:
调用} 表示,而不调用它。在
f.close
只打印该方法的^{您的第二个代码块工作的原因是
with open(x) as y
构造具有syntactic sugar behind the scenes的alot。除了异常处理外,它还可以干净地处理对象的关闭。这意味着一旦到达with
块的末尾,就不需要手动关闭文件。在相关问题 更多 >
编程相关推荐