python: Create file but if name exists add number
Question: Does python have any built-in functionality for this? My idea is that it would
work the way certain OS's work if a file is outputted to a directory where a
file of that name already exists. I.e: if "file.pdf" exists it will create
"file2.pdf", and next time "file3.pdf".


Answer: In a way, Python has this functionality built into the `tempfile` module.
Unfortunately, you have to tap into a private global variable,
`tempfile._name_sequence`. This means that officially, `tempfile` makes no
guarantee that in future versions `_name_sequence` even exists -- it is an
implementation detail. But if you are okay with using it anyway, this shows
how you can create uniquely named files of the form `file#.pdf` in a specified
directory such as `/tmp`:

    
    
    import tempfile
    import itertools as IT
    import os
    
    def uniquify(path, sep = ''):
        def name_sequence():
            count = IT.count()
            yield ''
            while True:
                yield '{s}{n:d}'.format(s = sep, n = next(count))
        orig = tempfile._name_sequence 
        with tempfile._once_lock:
            tempfile._name_sequence = name_sequence()
            path = os.path.normpath(path)
            dirname, basename = os.path.split(path)
            filename, ext = os.path.splitext(basename)
            fd, filename = tempfile.mkstemp(dir = dirname, prefix = filename, suffix = ext)
            tempfile._name_sequence = orig
        return filename
    
    print(uniquify('/tmp/file.pdf'))
    

