Προς το περιεχόμενο

Python os.walk με shortcut folder στα windows


Μετάβαση στην απάντηση Απαντήθηκε από nemocode,

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω ένα φάκελο στα windows. Περιέχει υποφακελους ορισμένοι από τους οποίους είναι shortcuts. Προσπαθώ με τη os.walk μέθοδο να πάρω μια λίστα με τα αρχεία και τα paths τους από όλο το φάκελο. Διαβάζει μια χαρά όλα τα αρχεία που περιέχονται σε physical subfolders αλλά όχι τους shortcuts. Δοκίμασα με το argument followlinks=True αλλά επειδή είναι shortcut και όχι symlink δεν τους διαβάζει. 

Χρησιμοποιώντας το glob βγάζει ως path των shortcuts το path με κατάληξη .lnk. Αλλά ακόμα και αν χρησιμοποιήσω αυτό το path στην os.walk, δεν τους διαβάζει.

Έχει κανείς κάποια ιδέα πως να διαβάσω τον shortcut folder και τα περιεχόμενα (χωρίς να πάρω manually τις actual διευθύνσεις των shortcuts)

 

Ευχαριστώ 

 

  • 2 εβδομάδες αργότερα...
  • Λύση
Δημοσ.

Η ανάγνωση των συντομεύσεων (αρχεία. Μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη pylnk στην Python για να εξαγάγετε πληροφορίες από αρχεία συντομεύσεων και να επιλύσετε τις διαδρομές προορισμού τους.

import os
import glob
from pylnk import parse

def process_folder(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            file_path = os.path.join(root, file)
            if file.endswith('.lnk'):
                target_path = resolve_shortcut(file_path)
                if target_path:
                    print("Shortcut:", file_path)
                    print("Target:", target_path)
            else:
                print("File:", file_path)

def resolve_shortcut(file_path):
    try:
        with open(file_path, 'rb') as f:
            lnk = parse(f)
            target_path = lnk.resolve().path
            return target_path
    except Exception as e:
        print("Error resolving shortcut:", file_path)
        return None

folder_path = 'C:/path/to/your/folder'
process_folder(folder_path)
  • Thanks 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...