根据条件将文件从一个目录移动到另一个目录
Move Files from a Directory to Another Based on a Condition
我有一个包含多个文件夹的主目录。我想遍历这些子文件夹,检查每个子文件夹是否包含超过(例如 10 个文件)保留 10 个文件并将其余文件移动到新目录,否则删除子文件夹。
这是我的目录的样子:
每个子目录大约有100个文件,我想遍历这些子目录,先检查一下,保留10个文件,其余的移动到新目录。
我认为这可以在 pathlib
或 os
的帮助下完成,但我在编写脚本时需要帮助。
我认为代码将如下所示:
for directory in os.listdir('path'):
for file in os.listdir(os.path.join('path', directory)):
if(....){
# keep 10 files and move the rest to a new directory
} else {
# delete the subdir
}
我建议对 moving
和 removing
文件和目录使用 shutil
库,下面是 moving
文件从一个路径到另一个路径的示例:
import shutil
original = r'original_path_where_the_file_is_currently_stored\file_name.file_extension'
target = r'target_path_where_the_file_will_be_moved\file_name.file_extension'
shutil.move(original,target)
下面是删除目录及其所有内容的示例:
import shutil
dirPath = '/path_to_the_dir/name_of_dir/'
shutil.rmtree(dirPath)
我们使用上面的两个片段来创建最终代码:
import shutil
import os
new_dir_path = "path_to_the_new_dir/new_dir_name"
for directory in os.listdir('path'):
for index, file in enumerate(file_list := os.listdir(path_dir := os.path.join('path', directory))):
if(len(file_list) >= 10):
# keep 10 files and move the rest to a new directory
if(index > 9):
shutil.move(os.path.join(path_dir,file),os.path.join(new_dir_path,file))
else:
# delete the subdir
shutil.rmtree(path_dir)
我有一个包含多个文件夹的主目录。我想遍历这些子文件夹,检查每个子文件夹是否包含超过(例如 10 个文件)保留 10 个文件并将其余文件移动到新目录,否则删除子文件夹。
这是我的目录的样子:
每个子目录大约有100个文件,我想遍历这些子目录,先检查一下,保留10个文件,其余的移动到新目录。
我认为这可以在 pathlib
或 os
的帮助下完成,但我在编写脚本时需要帮助。
我认为代码将如下所示:
for directory in os.listdir('path'):
for file in os.listdir(os.path.join('path', directory)):
if(....){
# keep 10 files and move the rest to a new directory
} else {
# delete the subdir
}
我建议对 moving
和 removing
文件和目录使用 shutil
库,下面是 moving
文件从一个路径到另一个路径的示例:
import shutil
original = r'original_path_where_the_file_is_currently_stored\file_name.file_extension'
target = r'target_path_where_the_file_will_be_moved\file_name.file_extension'
shutil.move(original,target)
下面是删除目录及其所有内容的示例:
import shutil
dirPath = '/path_to_the_dir/name_of_dir/'
shutil.rmtree(dirPath)
我们使用上面的两个片段来创建最终代码:
import shutil
import os
new_dir_path = "path_to_the_new_dir/new_dir_name"
for directory in os.listdir('path'):
for index, file in enumerate(file_list := os.listdir(path_dir := os.path.join('path', directory))):
if(len(file_list) >= 10):
# keep 10 files and move the rest to a new directory
if(index > 9):
shutil.move(os.path.join(path_dir,file),os.path.join(new_dir_path,file))
else:
# delete the subdir
shutil.rmtree(path_dir)