使用python脚本删除一个文件夹中和另一个文件夹中同名的文件
即使路径中包含中文,或者文件名中包含中文,也可使用下面的脚本。
下面的脚本只会删除第二个文件夹中与第一个文件夹同名的文件。
import os
def delete_same_named_files(dir1, dir2):
# 获取第一个文件夹中的所有文件名
files_in_dir1 = set(os.listdir(dir1))
# 遍历第二个文件夹中的文件
for filename in os.listdir(dir2):
# 如果文件名在第一个文件夹中也存在
if filename in files_in_dir1:
# 构建第二个文件夹中文件的完整路径
file_path = os.path.join(dir2, filename)
# 删除文件
try:
os.remove(file_path)
print(f"Deleted: {file_path}")
except OSError as e:
print(f"Error: {e.strerror} : {file_path}")
# 使用示例
dir1 = "/path/to/first/directory"
dir2 = "/path/to/second/directory"
delete_same_named_files(dir1, dir2)
下面的脚本来从一个文件夹中随机选取210个文件,并将这些文件移动到另一个文件夹中,你可以使用os、shutil和random模块。以下是一个示例脚本
请确保将/path/to/source/directory和/path/to/target/directory替换为你实际的文件夹路径。
import os
import shutil
import random
def select_and_move_random_files(source_dir, target_dir, count):
# 确保目标文件夹存在
if not os.path.exists(target_dir):
os.makedirs(target_dir)
# 获取文件夹中所有文件的列表
files = os.listdir(source_dir)
# 如果文件数量少于需要的数量,则输出警告并返回
if len(files) < count:
print(f"Warning: There are only {len(files)} files in {source_dir}. Moving all files.")
count = len(files)
# 随机选择count个文件的索引
selected_indices = random.sample(range(len(files)), count)
# 根据索引获取文件名,并构建完整路径
selected_files = [os.path.join(source_dir, files[i]) for i in selected_indices]
# 将选中的文件移动到目标文件夹
for file in selected_files:
try:
shutil.move(file, target_dir)
print(f"Moved: {file} to {target_dir}")
except Exception as e:
print(f"Error moving {file}: {e}")
# 使用示例
source_directory = "/path/to/source/directory" # 替换为你的源文件夹路径
target_directory = "/path/to/target/directory" # 替换为目标文件夹路径
count = 210 # 需要选取的文件数量
select_and_move_random_files(source_directory, target_directory, count)