首页 > 解决方案 > Python将文件移动到文件夹而不是脚本?

问题描述

我正在尝试学习python,我还没有编写此脚本,但它可以满足我的需要,因为我想清理我的下载文件夹,脚本将所有文件移动到基​​于扩展名的文件夹中,这很好,但是脚本得到了也移动到文件夹

我试图避免这种情况,我的逻辑是

if file_format != 'cleardir.py':
    then skip this file

但我不确定为什么我想要你的建议和解释你的逻辑这里是代码

#Import important libraries
import os
from pathlib import Path

#
DIRECTORIES = {
   "HTML": [".html5", ".html", ".htm", ".xhtml"],
   "IMAGES": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", "svg",
   ".heif", ".psd"],
   "VIDEOS": [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng",
   ".qt", ".mpg", ".mpeg", ".3gp"],
   "DOCUMENTS": [".oxps", ".epub", ".pages", ".docx", ".doc", ".fdf", ".ods",
   ".odt", ".pwi", ".xsn", ".xps", ".dotx", ".docm", ".dox",
   ".rvg", ".rtf", ".rtfd", ".wpd", ".xls", ".xlsx", ".ppt",
   "pptx"],
   "ARCHIVES": [".a", ".ar", ".cpio", ".iso", ".tar", ".gz", ".rz", ".7z",
   ".dmg", ".rar", ".xar", ".zip"],
   "AUDIO": [".aac", ".aa", ".aac", ".dvf", ".m4a", ".m4b", ".m4p", ".mp3",
   ".msv", "ogg", "oga", ".raw", ".vox", ".wav", ".wma"],
   "PLAINTEXT": [".txt", ".in", ".out"],
   'MAIL': ['.msg'],
   "PDF": [".pdf"],
   "PYTHON": [".py"],
   "XML": [".xml"],
   "EXE": [".exe"],
   "SHELL": [".sh"]
}

FILE_FORMATS = {file_format: directory
   for directory, file_formats in DIRECTORIES.items()
   for file_format in file_formats}

def organise_folder():
   for entry in os.scandir():
      if entry.is_dir():
         continue
      file_path = Path(entry)
      file_format = file_path.suffix.lower()
      if file_format in FILE_FORMATS:
         directory_path = Path(FILE_FORMATS[file_format])
         directory_path.mkdir(exist_ok=True)
         file_path.rename(directory_path.joinpath(file_path))
 #        elif:
 #            if file_format != 'cleardir.py':
 #                pass

   try:
      os.mkdir("OTHER-FILES")
   except:
      pass

   for dir in os.scandir():
      try:
         if dir.is_dir():
            os.rmdir(dir)
         else:
            os.rename(os.getcwd() + '/' + str(Path(dir)), os.getcwd() + '/OTHER-FILES/' + str(Path(dir)))
      except:
         pass

if __name__ == "__main__":
   organise_folder()

标签: python

解决方案


您可以使用 python 变量__file__来引用脚本文件名。

我认为你可以改变

   for entry in os.scandir():
       if entry.is_dir():
          continue

   for entry in os.scandir():
       if entry.is_dir() or entry.name == os.path.basename(__file__):
           continue

跳过文件。


推荐阅读