我有一些文件,我想将它们移动到某些文件夹。我根据文件数量制作了创建这些文件夹的代码。如何将文件移动到每个文件夹(如果直接在创建每个文件夹时更好)?
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
像这样......
答案 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)))