Python Forum
How to create def for sorted() from list of versioning files (filename+datetime)
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to create def for sorted() from list of versioning files (filename+datetime)
#6
I have a new problem.

I have a list of files that need to be deleted ("deletelist"), but to be able to delete them from filesystem, I need to locate them in actual file list ("lista"), adding directory path in front because I trimmed file extension in all latter lists for convinience.

Here is working code, problem starts at like 46:
import os
from os import listdir
from os.path import isfile, join
from datetime import datetime
from pprint import pprint
 
def removeext(path):
    return os.path.splitext(path)[0]
 
MyDir = 'c:/test'
#os.chdir(MyDir)
pst_files = []
ista2 = []
 
#lista = [f for f in listdir(MyDir) if isfile(join(MyDir, f))]
lista = ['archive.pst 2016-10-14 080101.pst', 'archive.pst 2016-10-15 080101.pst', 'archive.pst 2016-10-17 080101.pst', 'archive.pst 2016-10-18 080101.pst', 'archive.pst 2016-10-19 080101.pst', 'archive.pst 2016-10-20 080101.pst', 'Outlook.pst 2016-10-14 080101.pst', 'Outlook.pst 2016-10-15 080101.pst', 'Outlook.pst 2016-10-17 080101.pst', 'Outlook.pst 2016-10-18 080101.pst', 'Outlook.pst 2016-10-19 080101.pst', 'Outlook.pst 2016-10-20 080101.pst', 'Outlook.sharing.xml.obi 2016-10-14 080101.obi', 'Outlook.sharing.xml.obi 2016-10-15 080101.obi', 'Outlook.sharing.xml.obi 2016-10-17 080101.obi', 'Outlook.sharing.xml.obi 2016-10-18 080101.obi', 'Outlook.sharing.xml.obi 2016-10-19 080101.obi', 'Outlook.sharing.xml.obi 2016-10-20 080101.obi']
 
print("lista:")
print(lista)
 
for line in lista:
    line = os.path.splitext(line)[0]
    lista2.append(line.split())
print("lista2:")
pprint(lista2)


print("lista3 sorted:")
list3 = sorted(lista2, key=lambda x: (x[0], datetime.strptime(x[1] + " " + x[2], "%Y-%m-%d %H%M%S")), reverse=True)
pprint(list3)

print("..................")
originalname = ""
nofiles = 1
for item in list3:
   if item[0] != originalname:
       originalname = item[0]
       nofiles = 1
   if nofiles > maxfiles:
       print( str(nofiles) + ": " + originalname + " " + item[1])
       deletelist.append(item)
   nofiles = nofiles + 1
print("deletelist:")
pprint(deletelist)

# Problematic code, I need to locate item in the list that consists of item[0]+" "+item[1]+" "+item[2] and then actually delete that file
for item in deletelist:
   f = join(os.path.normpath(MyDir), item[0]+" "+item[1]+" "+item[2])
   sub = str(item[0] + " " + item[1] + " " + item[2])
   print("f: "+f)
   print("sub: "+sub)
   print("isfile(f): "+str(isfile(f)))
   print("test")
   # locate item in "lista" list that has "sub" in it
   #print(join(f for f in list if sub in f))
Output:
lista: ['archive.pst 2016-10-14 080101.pst', 'archive.pst 2016-10-15 080101.pst', 'archive.pst 2016-10-17 080101.pst', 'archive.pst 2016-10-18 080101.pst', 'archive.pst 2016-10-19 080101.pst', 'archive.pst 2016-10-20 080101.pst', 'archive.pst 2016-10-20 080501.pst', 'Outlook.pst 2016-10-14 080101.pst', 'Outlook.pst 2016-10-15 080101.pst', 'Outlook.pst 2016-10-17 080101.pst', 'Outlook.pst 2016-10-18 080101.pst', 'Outlook.pst 2016-10-19 080101.pst', 'Outlook.pst 2016-10-20 080101.pst', 'Outlook.sharing.xml.obi 2016-10-14 080101.obi', 'Outlook.sharing.xml.obi 2016-10-15 080101.obi', 'Outlook.sharing.xml.obi 2016-10-17 080101.obi', 'Outlook.sharing.xml.obi 2016-10-18 080101.obi', 'Outlook.sharing.xml.obi 2016-10-19 080101.obi', 'Outlook.sharing.xml.obi 2016-10-20 080101.obi'] lista2: [['archive.pst', '2016-10-14', '080101'],  ['archive.pst', '2016-10-15', '080101'],  ['archive.pst', '2016-10-17', '080101'],  ['archive.pst', '2016-10-18', '080101'],  ['archive.pst', '2016-10-19', '080101'],  ['archive.pst', '2016-10-20', '080101'],  ['archive.pst', '2016-10-20', '080501'],  ['Outlook.pst', '2016-10-14', '080101'],  ['Outlook.pst', '2016-10-15', '080101'],  ['Outlook.pst', '2016-10-17', '080101'],  ['Outlook.pst', '2016-10-18', '080101'],  ['Outlook.pst', '2016-10-19', '080101'],  ['Outlook.pst', '2016-10-20', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-14', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-15', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-17', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-18', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-19', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-20', '080101']] lista3 sorted: [['archive.pst', '2016-10-20', '080501'],  ['archive.pst', '2016-10-20', '080101'],  ['archive.pst', '2016-10-19', '080101'],  ['archive.pst', '2016-10-18', '080101'],  ['archive.pst', '2016-10-17', '080101'],  ['archive.pst', '2016-10-15', '080101'],  ['archive.pst', '2016-10-14', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-20', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-19', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-18', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-17', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-15', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-14', '080101'],  ['Outlook.pst', '2016-10-20', '080101'],  ['Outlook.pst', '2016-10-19', '080101'],  ['Outlook.pst', '2016-10-18', '080101'],  ['Outlook.pst', '2016-10-17', '080101'],  ['Outlook.pst', '2016-10-15', '080101'],  ['Outlook.pst', '2016-10-14', '080101']] .................. 3: archive.pst 2016-10-19 4: archive.pst 2016-10-18 5: archive.pst 2016-10-17 6: archive.pst 2016-10-15 7: archive.pst 2016-10-14 3: Outlook.sharing.xml.obi 2016-10-18 4: Outlook.sharing.xml.obi 2016-10-17 5: Outlook.sharing.xml.obi 2016-10-15 6: Outlook.sharing.xml.obi 2016-10-14 3: Outlook.pst 2016-10-18 4: Outlook.pst 2016-10-17 5: Outlook.pst 2016-10-15 6: Outlook.pst 2016-10-14 deletelist: [['archive.pst', '2016-10-19', '080101'],  ['archive.pst', '2016-10-18', '080101'],  ['archive.pst', '2016-10-17', '080101'],  ['archive.pst', '2016-10-15', '080101'],  ['archive.pst', '2016-10-14', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-18', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-17', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-15', '080101'],  ['Outlook.sharing.xml.obi', '2016-10-14', '080101'],  ['Outlook.pst', '2016-10-18', '080101'],  ['Outlook.pst', '2016-10-17', '080101'],  ['Outlook.pst', '2016-10-15', '080101'],  ['Outlook.pst', '2016-10-14', '080101']] f: c:\test\archive.pst 2016-10-19 080101 sub: archive.pst 2016-10-19 080101 isfile(f): False test f: c:\test\archive.pst 2016-10-18 080101 sub: archive.pst 2016-10-18 080101 isfile(f): False test f: c:\test\archive.pst 2016-10-17 080101 sub: archive.pst 2016-10-17 080101 isfile(f): False test f: c:\test\archive.pst 2016-10-15 080101 sub: archive.pst 2016-10-15 080101 isfile(f): False test f: c:\test\archive.pst 2016-10-14 080101 sub: archive.pst 2016-10-14 080101 isfile(f): False test f: c:\test\Outlook.sharing.xml.obi 2016-10-18 080101 sub: Outlook.sharing.xml.obi 2016-10-18 080101 isfile(f): False test f: c:\test\Outlook.sharing.xml.obi 2016-10-17 080101 sub: Outlook.sharing.xml.obi 2016-10-17 080101 isfile(f): False test f: c:\test\Outlook.sharing.xml.obi 2016-10-15 080101 sub: Outlook.sharing.xml.obi 2016-10-15 080101 isfile(f): False test f: c:\test\Outlook.sharing.xml.obi 2016-10-14 080101 sub: Outlook.sharing.xml.obi 2016-10-14 080101 isfile(f): False test f: c:\test\Outlook.pst 2016-10-18 080101 sub: Outlook.pst 2016-10-18 080101 isfile(f): False test f: c:\test\Outlook.pst 2016-10-17 080101 sub: Outlook.pst 2016-10-17 080101 isfile(f): False test f: c:\test\Outlook.pst 2016-10-15 080101 sub: Outlook.pst 2016-10-15 080101 isfile(f): False test f: c:\test\Outlook.pst 2016-10-14 080101 sub: Outlook.pst 2016-10-14 080101 isfile(f): False test Process finished with exit code 0
Reply


Messages In This Thread
RE: How to create def for sorted() from list of versioning files (filename+datetime) - by DrLove73 - Jan-12-2017, 01:15 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Delete strings from a list to create a new only number list Dvdscot 8 1,749 May-01-2023, 09:06 PM
Last Post: deanhystad
  list the files using query in python arjunaram 0 735 Mar-28-2023, 02:39 PM
Last Post: arjunaram
  Create new folders and copy files cocobolli 3 1,672 Mar-22-2023, 10:23 AM
Last Post: Gribouillis
  Failing to print sorted files tester_V 4 1,395 Nov-12-2022, 06:49 PM
Last Post: tester_V
  [split] why can't i create a list of numbers (ints) with random.randrange() astral_travel 7 1,671 Oct-23-2022, 11:13 PM
Last Post: Pedroski55
  How to download a list of files from FTP? schnarkle 0 1,063 Jun-21-2022, 10:35 PM
Last Post: schnarkle
  Rename part of filename in multiple files atomxkai 7 7,605 Feb-18-2022, 10:03 PM
Last Post: atomxkai
  Python code to read second line from CSV files and create a master CSV file sh1704 1 2,492 Feb-13-2022, 07:13 PM
Last Post: menator01
  Append files and add column with last part of each filename NiKirk 0 2,711 Feb-04-2022, 07:35 AM
Last Post: NiKirk
  set and sorted, not working how expected! wtr 2 1,381 Jan-07-2022, 04:53 PM
Last Post: bowlofred

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020