Файл создается не тогда, когда программа завершает работу, а тогда когда отрабатывает метод close().
Это легко увидеть, если сделать маленький эксперимент:
import time
from datetime import datetime
print(datetime.now(),flush=True)
file = open("ABC","w+")
print(datetime.now(),flush=True)
file.close()
print(datetime.now(),flush=True)
time.sleep(90)
Теперь смотрим скрин зкрана. Видно, что процесс не закончен (он уснул по sleep и проснется через полторы минуты, т.е. в 20: 37:.... , красный квадратик внизу справа подтверждает, что процесс активен ), а файл уже создан.