Versioning file name using Python

我的梦境 提交于 2019-12-13 17:15:52

问题


Basically when I download a file, it should check whether the file exists or not. If not exits rename the file with the version-0 else if exists rename the file with the next iterating version (eg- it should be file-name-version-1)

Here is what I have tried:

def VersionFile(file_spec, vtype='copy'):
    import os, shutil

    ok = 0
    if os.path.isfile(file_spec):
        # or do other error checking...
        if vtype not in ('copy', 'rename'):
            vtype = 'copy'

        # determine root file name so the extension doesn't get longer and longer...
        n, e = os.path.splitext(file_spec)

        # is e an integer?
        try:
            num = int(e)
            root = n
        except ValueError:
            root = file_spec

        # find next available file version
        for i in xrange(100):
            new_file = '%s_V.%d' % (root, i)
            if not os.path.isfile(new_file):
                if vtype == 'copy':
                    shutil.copy(file_spec, new_file)
                else:
                    os.rename(file_spec, new_file)
                ok = 1
                break
    return ok

if __name__ == '__main__':
    # test code (you will need a file named test.txt)
    print VersionFile('test.txt') # File is exists in the directory
    print VersionFile('alpha.txt') # File not exists in the directory

Above code is going to work only after downloading the file it will explicitly check and Renaming the file with version if exists.

I want in such a way it should check implicitly.


回答1:


Use glob to check for the file in your target directory:

I havent been able to test this code, consider it as pseudocode for now. But this should do the job once you integrate the method properly into your program.

import glob

currentVersion = glob.glob(yourFileName)

if currentVersion == []:                             #checks if file exists
    download and saveAs version-0                                 #saves as original if doesnt exist
else:
    download and saveAs (fileName+(list(currentVersion[0])[-1] + 1)   #if exists, gets the existing version number, and saves it as that number plus one


来源:https://stackoverflow.com/questions/46872708/versioning-file-name-using-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!