首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何遍历给定目录中的所有文件,创建文件夹并移动文件?

如何遍历给定目录中的所有文件,创建文件夹并移动文件?
EN

Stack Overflow用户
提问于 2019-05-15 01:05:44
回答 2查看 588关注 0票数 0

我有一个包含大约500个文件的文件夹。

我在创建基于这500个文件名的文件夹时遇到了问题。例如,如果我有A.txt、B.txt等文件,首先我想创建名为'A‘和'B’的文件夹,然后将'A.txt‘文件推入名为'A’的文件夹,将'B.txt‘名文件推入我刚刚创建的名为'B’的文件夹。所以基本上有两个任务,首先是根据文件名创建文件夹,然后将相应的文件推送到指定的文件夹中。

然而,我被困在两个地方,第一,文件夹名被创建为'A.txt','B.txt‘等,而不是在'A’或'B‘上,因为我采用了文件名本身,第二是将文件放到相应的文件夹中。

我试过下面的代码:

代码语言:javascript
复制
       import os, shutil, glob
       import pandas as pd

       def i2f(directory):
       for filename in os.listdir(directory):
           foldername = filename
           folder_loc = "all_files\user\txt-images"
           crfolder(os.path.join(folder_loc, foldername))
           '''
           crfolder is function that creates a folder
           '''
           src_dir = r"all_files\user\txt-images\src_folder" 
           dstn_dir = r"all_files\user\txt-images\trgt_folder" 
           for file in glob.glob("\\*.txt"):
           re.compile(r"[^_.A-Z]")
           shutil.copy2(file, dstn_dir)

       def crfolder():
           import os
           try:
              if not os.path.exists(folder_loc):
                 os.makedirs(folder_loc)
           except OSError:
              print ('''Can't create directory! ''' +  folder_loc)

如有任何帮助,请告诉我哪里弄错了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-15 03:35:01

试试这个:

代码语言:javascript
复制
import os
import shutil

path = r"C:\Users\vasudeos\OneDrive\Desktop\newfolder"

for x in os.listdir(path):

    file = os.path.join(path, x)

    if not os.path.isdir(file):
        folder_name = os.path.join(path, os.path.splitext(x)[0])

        if not os.path.exists(folder_name):
            os.mkdir(folder_name)

        shutil.move(file, folder_name)
票数 0
EN

Stack Overflow用户

发布于 2019-05-15 02:16:50

为了让事情变得简单:

代码语言:javascript
复制
import os, shutil
parent_folder = 'myfolder'

# get files only not folders
files = [name for name in os.listdir(parent_folder) if os.path.isfile(os.path.join(parent_folder, name))]

for f_name in files:
    file = os.path.join(parent_folder, f_name)  # full path

    folder_name = f_name.split('.')[0]  # remove file extension
    folder = os.path.join(parent_folder, folder_name)  # full path

    if not os.path.exists(folder):  # make folder if not existed before
        os.mkdir(folder)

    shutil.move(file, os.path.join(folder, f_name))  # move file
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56135329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档