问题
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