I just want to move a file from one folder to another (already know how to do that) and in the process check all the files in the destination folder and delete the files with the same name.
I have two folders /src and /dst.
In folder /src I have:
- 'access.log.1.txt'
and in folder /dst :
- 'access.log.1.20171110_115840565311.txt'
- 'access.log.1.20171110_115940565311.txt'
- 'access.log.2.20171110_115940565311.txt'
When I move the file in /src to /dst I want to delete all the files named as the file in /src excluding the datetime() extension in the files of /dst.
So the /dst folder should look like this after the execution:
- 'access.log.1.txt'
- 'access.log.2.20171110_115940565311.txt'
This is the code I have to move files from /src to /dst:
entrada = ENTRADA #This 3 are the paths to the folders /src
salida = SALIDA # /dst
error=ERROR # /err
files=glob.glob(entrada)
for file in files:
fichero=open(file,encoding='utf-8')
try:
for line in fichero:
la=line.replace("-","")
li=la.replace('”'+chr(10),'')
li=li.split('"')
line_DB(li)
fichero.close()
if TIME_RENAME=='True':
execution=str(datetime.now())
execution=execution.replace('.','')
execution=execution.replace('-','')
execution=execution.replace(' ','_')
execution_time=execution.replace(':','')
base = os.path.splitext(file)[0]
base=base+'.'+execution_time+'.txt'
os.rename(file,base)
file=base
else:
print('Hello')
#This is where I need the code
shutil.move(file, salida)
con.commit()
except:
logging.error(sys.exc_info())
print(sys.exc_info())
fichero.close()
shutil.move(file, error)
Anyone could help me?
Thanks!!
Sandip's answer should work, but if you specifically want it the way you've stated in your question, this could work:
import os
src_filename = "access.log.1.txt"
dst_dir = "test"
for filename in os.listdir(dst_dir):
# Filter files based on number of . in filename
if filename.count(".") < 4:
continue
# We need to remove the datetime extension before comparing with our filename
filename_tokens = filename.split(".") # List of words separated by . in the filename
print "Tokens:", filename_tokens
# Keep only indexes 0, 1, 2 and 4 (exclude index 3, which is the datetime-string)
datetime_string = filename_tokens.pop(3) # pop() also removes the datetime-string
print "Datetime:", datetime_string
dst_filename = ".".join(filename_tokens)
print "Destination filename:", dst_filename
# Check if the destination filename now matches our source filename
if dst_filename == src_filename:
# Get full path of file to be deleted
filepath = os.path.join(dst_dir, filename)
# Delete it
print "Deleting:", filepath
os.remove(filepath)
print "----------------------"
Note that this approach assumes that all your destination file names looks like they do in your question, i.e. that all of them have 4 periods (.
) and that the datetime string is always between your third and fourth period.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With