创建文件夹时将文件移动到文件夹

时间:2017-12-18 15:17:16

标签: python directory

我有一些文件,我想将它们移动到某些文件夹。我根据文件数量制作了创建这些文件夹的代码。如何将文件移动到每个文件夹(如果直接在创建每个文件夹时更好)?

import os
import errno

src = (os.path.expanduser('~\\Desktop\\output8\\singola\\'))

causali = os.listdir(src)
causali.sort(key=lambda x: int(x.split('.')[0]))

for file in enumerate(causali):
    try:
        id_folder = os.makedirs(os.path.expanduser('~\\Desktop\\output8\\singola\\{}'.format(file[0])))
    except OSError as e:
        if e.errno != errno.EEXIST:
            raise

像这样......

example

2 个答案:

答案 0 :(得分:1)

os.rename()shutil.move(),它们都具有相同的语法。

os.rename("path/to/current/file.foo", "path/to/new/desination/for/file.foo")
shutil.move("path/to/current/file.foo", "path/to/new/destination/for/file.foo")

在你的情况下,

import os
import errno

src = (os.path.expanduser('~\\Desktop\\output8\\singola\\'))

causali = os.listdir(src)
causali.sort(key=lambda x: int(x.split('.')[0]))

for file in enumerate(causali):
   try:
        id_folder = os.makedirs(os.path.expanduser('~/test_move/{}'.format(file[0])))
        os.rename(os.path.expanduser('~\\Desktop\\output8\\singola\\{}'.format(file[1])),os.path.expanduser('~\\Desktop\\output8\\singola\\{}\\{}'.format(file[0],file[1])))
   except OSError as e:path/to/new/destination/for/file
        if e.errno != errno.EEXIST:
            raise

答案 1 :(得分:1)

下面的代码将为目录中的每个文件名创建子目录(文件夹),文件夹的名称将与您的文件名相同。并且每个文件都将移动到具有相同名称的文件夹。

import glob, os, shutil                                                                     
source = "C:\\Users\\xx\\Desktop\\Folder"

for file_path in glob.glob(os.path.join(source, '*.*')):
    new_sub_folder = file_path.rsplit('.', 1)[0]
    os.mkdir(os.path.join(source, new_sub_folder))
    shutil.move(file_path, os.path.join(new_sub_folder, os.path.basename(file_path)))