[英]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.