为了账号安全,请及时绑定邮箱和手机立即绑定

删除文件夹中文件的副本

删除文件夹中文件的副本

白板的微信 2023-03-16 15:34:25
我有这个文件夹。让我们考虑以下文件:sub-OAS30027_ses-d1300_run-01_T1w.nii.gz和sub-OAS30027_ses-d1300_run-02_T1w.nii.gz。它们具有相同的名称初始部分,即sub-OAS30027_ses-d1300。我想用 Python 编写一个脚本,只提取具有相同sub-OAS30027_ses-d1300 的文件中的一个文件,以及具有相同sub-OAS30031_ses-d0427 的文件中的一个,依此类推。提取哪个文件并不重要,重要的是一个。这是因为sub-OAS30027_ses-d1300_run-01_T1w.nii.gz和sub-OAS30027_ses-d1300_run-02_T1w.nii.gz就像副本,我不想要它们。你可以帮帮我吗 ?
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

使用re和os模块:


PS:如果出现问题,请始终保留原始文件的副本,以便再次使用。


import os,re

file = os.listdir()

match = []

for i in file:

    t = re.findall('_ses\-d(.*?)_',i)

    if t :

        if t[0] not in match :

            match.append(t[0])

        else :

            os.remove(i)


查看完整回答
反对 回复 2023-03-16
?
偶然的你

TA贡献1841条经验 获得超3个赞

我试图让它尽可能简单。我希望这有帮助:


import os


directory = 'directory_name' # put in the directory you want to search through

duplicate_file_lst = []


# loop through directory files

for filename in os.listdir(directory):

   if filename.startswith("sub-OAS30027_ses-d1300"):

       duplicate_file_lst.append(filename)


# Only keeps the first file in the list        

for file in duplicate_file_lst:

   if file != duplicate_file_lst[0]:

       os.remove(file)


查看完整回答
反对 回复 2023-03-16
  • 2 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信