我有一個有趣的問題,我試圖弄清楚。我有一個大的程序,並在該程序的一部分,我正在做一個.xml文件並寫入它(只使用字符串沒有lxml或任何東西)。我將這些特定的代碼放到自己的程序中進行測試,並且遇到了一個問題。該代碼是在python中製作和寫入文件,但不寫或關閉文件
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
代碼貫穿而過,沒有給我任何錯誤,只是不觸發,但在該文件是由沒有什麼寫在上面。另外,如果不先關閉Python,我不能刪除文件,因此.close似乎也不會發生。但是如果我在.write和.close後面加上print語句,它們都會觸發,所以程序應該會觸及所有的行。上面的文本是整個程序,所以沒有別的東西可以搞亂它。
現在,當我改變使用一切正常。所以代碼
import os
directory = 'FileDirectory'
name = 'Test File.xml'
with open('K:\\JOBS\\' + directory + '\\XML Files\\' + name, 'w') as xmlJob:
xmlJob.write('Test write')
運行良好。所以顯然我可以使用with而不是open和.close,但是現在我想弄清楚爲什麼第一個選項失敗。我在其他程序中使用了幾乎完全相同的代碼來寫入日誌文件等。有人有主意嗎?
xmlJob.close without()??? –
你應該習慣使用'os.path.join()'來組裝路徑名。它知道你的操作系統是否需要正斜槓或反斜槓,並且永遠不會忘記雙反斜槓。 –