def saves():
global i
with open("data.txt", 'a') as out_file: # with ... as - это более удобная конструкция
out_file.write( str(i) ) # текст будет добавляться в файл, если нужно перезаписывать тогда вверху поменяй 'a' на 'w'
Кстати зачем вызывать функцию data() в последней строке? или там опечатка и нужно saves()?
А чтобы отступы были нужно добавлять не как текст, а как код на питоне.