알아 내려고하는 흥미로운 점이 있습니다. 나는 큰 프로그램을 가지고 있고 그 프로그램의 일부로 .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
하지만 파일이 만들어 동안으로 작성 아무것도 없다. 또한 파이썬을 닫지 않고 파일을 삭제할 수 없으므로 .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')
잘 실행됩니다. 그래서 분명히 open과 .close 대신에 with를 사용할 수 있습니다. 그러나 지금은 첫 번째 옵션이 실패한 이유를 알아 내려고합니다. 나는 실제로 다른 프로그램에서 똑같은 코드를 사용하여 로그 파일 등을 작성했다. 누구든지 아이디어가 있습니까?
xmlJob.close without() ??? –
'os.path.join()'을 사용하는 습관에 빠져서 경로 이름을 조합해야합니다. 운영 체제가 슬래시 또는 백래쉬를 원하는지 여부를 알고 있으며 이중 백 슬래시를 잊지 않습니다. –