Jump to content
Ultimaker Community of 3D Printing Experts
Sign in to follow this  
pm_dude

SD Card - Sorting the list on UM2 screen

Recommended Posts

Hello,

A while ago someone said that he would like to sort the list of files and folder displayed in the UM2 print menu.

I've looked at the Marlin code for that a bit and no sorting is done at all. It really depend on when the file was placed on the card or in a given folder.

I didn't wanted to start making a sort directly in Marlin when we load the content of the folder since the browser is already slow when many files are present so I did a Python script that goes through the folders recursively and move the folders and files in order (sorted folder first, then sorted files) in and out of a temp folder just to force the FAT to be ordered. It doesnt change the modified date of the files.

Currently it works on Windows. I haven't padded much since it was just a quick test. The path to start the sort is set as root manually at the end. I don't think it would be safe enough at the moment for a wide distribution but if you want to test it out here is the code. The worst that can happen is that files or folders will be moved in a temp folder at the same level and wont be moved back.

 


import os
import tempfile
def SortContent(folder):
print "sorting content for", folder
content = os.listdir(folder)
tempdir = tempfile.mkdtemp(dir=folder)
content.sort()
for f in content:
realPath = os.path.join(folder, f)
if os.path.isdir(realPath):
tempPath = os.path.join(tempdir, f)
try:
os.rename(realPath, tempPath)
os.rename(tempPath, realPath)
except:
print "ERROR: Folder could not be sorted", realPath, tempPath

for f in content:
realPath = os.path.join(folder, f)
if not os.path.isdir(realPath):
tempPath = os.path.join(tempdir, f)
try:
os.rename(realPath, tempPath)
os.rename(tempPath, realPath)
except:
print "ERROR: File could not be sorted", realPath, tempPath

for f in content:
realPath = os.path.join(folder, f)
if os.path.isdir(realPath):
SortContent(realPath)
os.rmdir(tempdir)

root = r'I:\\'
SortContent(root)

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

Announcements

  • Our picks

    • Architect Design Contest | Vehicles.
      We're open for entries! - Design and submit your 3D designs of architectural entourage - vehicles - for a chance to win a large filament pack. Presenting an idea, an architectural design or something as big as an urban project isn't easy. A scaled model can really help to get your idea across.
        • Like
      • 24 replies
    • What The DfAM?
      I'm Steve Cox, an experienced engineer familiar with 3D printing. I wanted to share some DfAM guidelines with this community to help and make stronger parts.
      I'm also an Autodesk Certified Instructor for Fusion 360, so many of the images in ...
        • Thanks
        • Like
      • 22 replies
×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!