E
Evan Carmi
hey,
i am trying to move files with a specific file-ending (.msf) to dir above their
current location. my code so far works as long as all the files are on the same
dir level.
but how can i make it work if there are multiple subdirs with files inside of
them on different dir levels?
my code so far is:
---
top = 'f:\\test\\mail'
import os, time, itertools
#walk and find all files
allfiles = []
for root, dirs, files in os.walk(top, topdown=False):
for name in files:
allfiles.append(os.path.join(root, name))
#remove all non .msf files
index = []
for match in allfiles:
if match.endswith('.msf'):
index.append(match)
indexdest = []
indexdest = ['%s\\..\\..\\%s\\%s\\%s' % (x , time.strftime('%Y%m%d%H%M%S'),
os.path.basename(os.path.normpath(x+'\\..')), os.path.basename(x)) for x in ind
ex]
#\\.. to remove the ending and than basename to add it back on
indexdest = [os.path.normpath(i) for i in indexdest]
indexdest = [i.replace('Mail', 'backups-msf') for i in indexdest]
for a, b in itertools.izip(index, indexdest):
os.renames(a, b)
--
i want the .msf files to be in a dir on the same level as where the top string
points to (in this case f:\test\backups-msf).
thanks,
Evan
p.s. is there a more accurate word for a directory level or something on the
same "tier" of a directory?
i am trying to move files with a specific file-ending (.msf) to dir above their
current location. my code so far works as long as all the files are on the same
dir level.
but how can i make it work if there are multiple subdirs with files inside of
them on different dir levels?
my code so far is:
---
top = 'f:\\test\\mail'
import os, time, itertools
#walk and find all files
allfiles = []
for root, dirs, files in os.walk(top, topdown=False):
for name in files:
allfiles.append(os.path.join(root, name))
#remove all non .msf files
index = []
for match in allfiles:
if match.endswith('.msf'):
index.append(match)
indexdest = []
indexdest = ['%s\\..\\..\\%s\\%s\\%s' % (x , time.strftime('%Y%m%d%H%M%S'),
os.path.basename(os.path.normpath(x+'\\..')), os.path.basename(x)) for x in ind
ex]
#\\.. to remove the ending and than basename to add it back on
indexdest = [os.path.normpath(i) for i in indexdest]
indexdest = [i.replace('Mail', 'backups-msf') for i in indexdest]
for a, b in itertools.izip(index, indexdest):
os.renames(a, b)
--
i want the .msf files to be in a dir on the same level as where the top string
points to (in this case f:\test\backups-msf).
thanks,
Evan
p.s. is there a more accurate word for a directory level or something on the
same "tier" of a directory?