linux - 如何检查和删除python中两个不同目录中不同的文件?
问题描述
我有两个文件夹,我想在两个文件夹中保留相同的文件。所以现在如果要删除两个文件夹中都不存在的文件,使用文件名“相同”。
我正在尝试这个,但似乎没有成功。
dir1 = os.listdir('/home/Desktop/computed_1d/')
dir2 = os.listdir('/home/Desktop/computed_2d_blaze/')
for filename in dir1:
try:
for filen in dir2:
if filename != filen:
os.remove(filename)
except:
pass
谁能告诉我我在哪里犯了错误?
解决方案
您可以使用 set 有效地检查重复项。
dir1 = os.listdir(path1)
dir2 = os.listdir(path2)
duplicates = set(dir1) & set(dir2)
# delete from dir1
for file in dir1:
if file not in duplicates:
os.remove(os.path.join(path1,file))
# delete from dir2
for file in dir2:
if file not in duplicates:
os.remove(os.path.join(path2,file))
推荐阅读
- gitlab - 如果标准方式显示错误 500,我如何删除损坏的 GitLab 存储库?
- popsql - 有这样的页面是什么意思
- c# - C# WPF TreeViewItem MouseDoubleClick 事件在 TreeViewItem 与 TreeViewItem.Header
- machine-learning - 训练期间的模型评估是否会影响 PyTorch 中的最终准确性?
- java - 返回不工作(需要实例化一个对象?) - Java
- python - Flask-SQLAlchemy 不会因连接丢失而超时
- javascript - HTML/JS 如何将选项填充/更新/添加到
- angular - 如何用请求填充缓冲区
- amazon-web-services - AWS S3 Headobject 操作:禁止
- c# - 将连续输入的数字分配给数组 3 6 23 12 4 a[0]=3 a[1]=6 a[2]=23 a[3]=12 a[4]=10