python - 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 变量__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
跳过文件。
推荐阅读
- charts - chart.js 更新时未捕获的引用错误
- javascript - JQuery&Rails:输入回车键后专注于下一个空输入
- prolog - 算术项不会失败,但它的否定会失败
- node.js - 将文件/表单数据发布到节点服务器失败。错误:SyntaxError: Unexpected token - 在 JSON 中的位置 0
- ios - 允许基于 ip 或代理网络覆盖的应用程序访问
- javascript - 使用正则表达式在换行符后捕获下一行文本
- node.js - 带有蒸汽护照的Angular 6 - Auth Guard问题
- unity3d - 在 Unity3D 中更改音乐曲目的节奏
- java - xpath 如何在内部工作?
- r - 亚群的平均值 - 输出到 LaTeX