DS_存储文件阻塞移动的Shutil问题

2024-09-27 00:17:43 发布

您现在位置:Python中文网/ 问答频道 /正文

新的Python开发人员正在尝试编写我的第一个脚本。目标是编写一个应用程序,根据文件类型将文件放入子文件夹,从而清理我的下载文件夹

这是我的密码:

import shutil
import os

directory = "/Users/Gustaf/downloads"
file_type_list = []
for filename in os.listdir("/Users/Gustaf/downloads"): #insert your downloads folder path
    path = directory
    file_type = os.path.splitext(filename)[1]
    if file_type not in file_type_list:
        file_type_list.append(file_type)
    if file_type in file_type_list:
        continue
    try:
        print(directory + file_type.replace(".", "/"))
        os.mkdir(directory + file_type.replace(".", "/"))
    except OSError as error:
        print(error)

for filename in os.listdir("/Users/Gustaf/downloads"):
    movable_file_path = directory + "/" + "%s" % (filename)
    file_type = os.path.splitext(filename)[1]
    file_type_no_extension = file_type.replace(".", "")
    file_no_extension = os.path.splitext(filename)[0] #used for the full file path in shutil.move
    fileDestination = directory + "/" + "%s" % (file_type_no_extension)

    if os.path.isdir(movable_file_path) == True:
        #skip directories
        print(movable_file_path)
        print("THIS IS A FOLDER" + "\n")
    
    if os.path.isfile(movable_file_path) == True:
        #The files you actually want to move
        print(filename)
        print("THIS IS A FILE" + "\n")
        shutil.move(movable_file_path, fileDestination) 

第一部分工作正常,程序会为每种文件类型创建文件夹,但当我尝试移动文件时,会得到以下结果:

Traceback (most recent call last):
  File "/Users/Gustaf/Desktop/Programming/downloads_sorter/main.py", line 41, in <module>
    shutil.move(movable_file_path, fileDestination) 
  File "/usr/local/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/shutil.py", line 786, in move
    raise Error("Destination path '%s' already exists" % real_dst)
shutil.Error: Destination path '/Users/Gustaf/downloads/.DS_Store' already exists

来自filenamemovable_file_pathfileDestination的输出如下:

DS_Store
/Users/Gustaf/downloads/DS_Store
/Users/Gustaf/downloads/
92722314_10157775412048005_7592678894226898944_n.jpg
/Users/Gustaf/downloads/92722314_10157775412048005_7592678894226898944_n.jpg
/Users/Gustaf/downloads/jpg
epub-download-atomic-habits-by-james-clear-9781847941831-fhy.epub
/Users/Gustaf/downloads/epub-download-atomic-habits-by-james-clear-9781847941831-fhy.epub
/Users/Gustaf/downloads/epub

第一个是导致问题的问题(DS_store)。有些文件可以移动,但遇到这种情况后,我什么也找不到。我做错了什么


Tags: pathinmoveosdownloadstypeepubfilename
1条回答
网友
1楼 · 发布于 2024-09-27 00:17:43

有关下列事项:

  • 文件名:DS_Store
  • 可移动的文件路径:/Users/Gustaf/downloads/DS_Store
  • 目的地:/Users/Gustaf/downloads/

您的代码正在尝试将DS_存储从 /Users/Gustaf/downloads/DS_Store/Users/Gustaf/downloads/DS_Store这是同一个地方。您根本没有尝试移动DS_商店,因此应该忽略它。您可以通过检查fileName中是否存在movable_file_path来完成此操作

在这种情况下,您可以按如下方式更改if语句:

if os.path.isfile(movable_file_path) and filename not in movable_file_path:
    #The files you actually want to move
    print(filename)
    print("THIS IS A FILE" + "\n")
    shutil.move(movable_file_path, fileDestination) 

相关问题 更多 >

    热门问题