我正在尝试将 .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()
我该怎么做?
对于像将所有文件移动到相同扩展名的子文件夹这样的简单任务,使用 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"