Python-从文件名创建文件夹,将文件移动到已创建的文件夹中

Python-从文件名创建文件夹,将文件移动到已创建的文件夹中,python,Python,我正在尝试用python编写我自己的File2Folder,因为它会根据我的需要更加自动化。我有它,这样它就可以从文件名创建一个文件夹,但每当我尝试将文件移动到新创建的文件夹中时,都会返回一个错误。有什么想法吗 import os import os.path import shutil from pathlib import Path import glob rootdir = r'T:\rcloneFolder' keepExt = ('.mkv', '.mp4', '.avi') sea

我正在尝试用python编写我自己的File2Folder,因为它会根据我的需要更加自动化。我有它,这样它就可以从文件名创建一个文件夹,但每当我尝试将文件移动到新创建的文件夹中时,都会返回一个错误。有什么想法吗

import os
import os.path
import shutil
from pathlib import Path
import glob

rootdir = r'T:\rcloneFolder'
keepExt = ('.mkv', '.mp4', '.avi')
searchPath = Path(rootdir)


for file in searchPath.rglob("*"):
    if file.name.endswith(keepExt):
        print(file)
        newName = (os.path.splitext(file.name)[0])
        newFolders = os.mkdir(os.path.join(searchPath,newName))
        print("Made File Directory: " + newName)
        name = newName + '.mkv'
        shutil.move(file, os.path.join(rootdir, name))

我认为您正在寻找的是,您需要使用
rootdir
而不是
searchPath
os.path.join
因为join需要一个普通字符串,那么新文件名将是
os.path.join(rootdir,newName,newName)+“.mkv”
由于您希望重命名扩展名并将其移动到同名文件夹中,因此我相信以下代码可以满足您的需要:

for file in searchPath.rglob("*"):
    if file.name.endswith(keepExt):
        print(file)
        name = (os.path.splitext(file.name)[0])
        newFolder = os.path.join(rootdir,name)
        os.mkdir(newFolder)
        print("Made File Directory: " + newFolder)
        destination = os.path.join(newFolder, name) + '.mkv'
        shutil.move(file, destination)

你犯了什么错误?我看不出你的代码有任何明显的错误。@Tadhgmandald Jensen我在代码中遇到了这个错误:AttributeError:“WindowsPath”对象没有属性“rstrip”欢迎使用堆栈溢出。请你的问题包括所有相关信息:代码应该做什么,你会得到什么错误(请完整的错误跟踪!)。如果可能的话,尝试创建一个。有关详细信息,请参阅。此操作无效。我甚至不知道从哪里进入我的道路。该脚本与files.os.chdir(您的_文件夹)不在同一路径中。请在循环之前添加此脚本。此脚本不会返回错误,但也不会发生任何错误。脚本说它正在运行,并且没有创建文件夹,因此也没有文件被移动到文件夹中。请不要只发布代码和答案。你能解释一下问题中的错误是什么以及你的代码是如何解决问题的吗?如果你想让文件夹名为“test.webm”而不是“test”,用file替换文件夹名
for file in searchPath.rglob("*"):
    if file.name.endswith(keepExt):
        print(file)
        name = (os.path.splitext(file.name)[0])
        newFolder = os.path.join(rootdir,name)
        os.mkdir(newFolder)
        print("Made File Directory: " + newFolder)
        destination = os.path.join(newFolder, name) + '.mkv'
        shutil.move(file, destination)