Writing to a new file if it doesn't exist, and appending to a file if it does Writing to a new file if it doesn't exist, and appending to a file if it does python python

Writing to a new file if it doesn't exist, and appending to a file if it does


Have you tried mode 'a+'?

with open(filename, 'a+') as f:    f.write(...)

Note however that f.tell() will return 0 in Python 2.x. See https://bugs.python.org/issue22651 for details.


It's not clear to me exactly where the high-score that you're interested in is stored, but the code below should be what you need to check if the file exists and append to it if desired. I prefer this method to the "try/except".

import osplayer = 'bob'filename = player+'.txt'if os.path.exists(filename):    append_write = 'a' # append if already existselse:    append_write = 'w' # make a new file if nothighscore = open(filename,append_write)highscore.write("Username: " + player + '\n')highscore.close()


Just open it in 'a' mode:

a   Open for writing. The file is created if it does not exist. The stream is positioned at the end of the file.

with open(filename, 'a') as f:    f.write(...)

To see whether you're writing to a new file, check the stream position. If it's zero, either the file was empty or it is a new file.

with open('somefile.txt', 'a') as f:    if f.tell() == 0:        print('a new file or the file was empty')        f.write('The header\n')    else:        print('file existed, appending')    f.write('Some data\n')

If you're still using Python 2, to work around the bug, either add f.seek(0, os.SEEK_END) right after open or use io.open instead.