簡體   English   中英

如何遍歷給定目錄內的所有文件並創建文件夾並移動文件?

[英]How do I iterate through all files inside a given directory and create folders and move the file?

我有一個包含約500個文件的文件夾。

我在基於這500個文件名創建文件夾時遇到問題。 例如,如果我首先擁有A.txt,B.txt等文件,我想創建名為“ A”和“ B”的文件夾,然后將“ A.txt”文件推送到名為“ A”和“ B.txt”命名的文件到我剛剛創建的名為“ B”的文件夾中。 因此,基本上,兩項任務首先是基於文件名創建文件夾,然后將相應的文件推送到命名文件夾中。

但是,我被卡在兩個地方,首先,文件夾名稱被創建為“ A.txt”,“ B.txt”等,而不是在“ A”或“ B”上創建,因為我要使用文件名本身,其次是是將文件放入相應的文件夾。

我試過下面的代碼:

       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)

如有任何幫助,請告訴我我在哪里弄錯了。

使事情變得簡單:

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

嘗試這個:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM