如何通过 python 将 .lnk 文件移动到文件夹?

问题描述 投票:0回答:1

我正在尝试将 .lnk 文件从桌面移动到文件夹。

我尝试使用 os 和 Shutil,但它们不起作用。

我的代码更复杂,它按扩展名按文件夹顺序发送所有文件,但对于 .lnk,它不起作用

import os
import shutil

desktop = os.listdir("C:\\Users\\Utente\\Desktop")
desktop.sort()

categories = {
    '.txt': 'documenti di testo', '.xlsx': 'fogli di calcolo',
    '.png': 'immagini', '.jpg': 'immagini', '.jpeg': 'immagini',
    '.zip': 'file zip', '.exe': 'programmi', '.pkt': 'PacketTracer',
    '.pdf': 'documenti vari', '.docx': 'WORD', '.pptx': 'PowerPoint',
    '.lnk': 'Collegamenti', '.py': 'codici vari', '.cpp': 'codici',
    '.html': 'codici vari', '.php': 'codici vari', '.js': 'codici vari',
}

url = "C:\\Users\\Utente\\Desktop\\"

def move_file(file_name, folder_name):
    try:
        shutil.move(url + file_name, url + folder_name + "\\" + file_name)
    except Exception as e:
        print(e)

def organize_files():
    for file_name in desktop:
        if file_name == "ordina_desktop.py":
            continue  # Ignora il file "ordina_desktop.py" sul desktop
        if os.path.isfile(url + file_name):
            file_extension = os.path.splitext(file_name)[1].lower()
            if file_extension in categories:
                folder_name = categories[file_extension]
                if not os.path.exists(url + folder_name):
                    try:
                        os.makedirs(url + folder_name)
                    except Exception as e:
                        print(e)
                move_file(file_name, folder_name)
            else:
                folder_name = "altro"
                if not os.path.exists(url + folder_name):
                    try:
                        os.makedirs(url + folder_name)
                    except Exception as e:
                        print(e)
                move_file(file_name, folder_name)

        elif os.path.isdir(url + file_name) and file_name not in categories.values():
            if file_name != "altro":
                folder_name = "altro"
                if not os.path.exists(url + folder_name):
                    try:
                        os.makedirs(url + folder_name)
                    except Exception as e:
                        print(e)
                move_file(file_name, folder_name)

organize_files()

我该怎么做?

python windows directory operating-system file-transfer
1个回答
0
投票

对于像将所有文件移动到相同扩展名的子文件夹这样的简单任务,使用 Windows shell 来执行其设计的较繁重的任务会更容易。

因此,要将所有这些文件移动到基于扩展名的子文件夹中,我们可以在目标文件夹中简单地在目标位置(例如用户桌面)运行 cmd 文件

MoveToSubs.cmd

cd /d "%USERPROFILE%\Desktop"
setlocal ENABLEDELAYEDEXPANSION
for %%f in (dir /b *.*) do (
set "g=%%~xf"
if not exist !g:~1! md !g:~1!
move "%%f" !g:~1!
)

之前

之后

此方法的一个小问题是,另外还可以有一个空文件夹 ~1,但如果它是空的,通过添加一个命令行很容易删除。

因此,从Python只需通过操作系统运行cmd,为了更通用的用途,添加一个参数所以

MoveToSubs.cmd "%USERPROFILE%\Desktop"

并将第一个命令行替换为

cd /d "%~dp1"

© www.soinside.com 2019 - 2024. All rights reserved.