对文件或文件夹的批量创建、移动和删除操作

mac2022-07-05  18

国庆七天假,工作六天半。。。 三天时间浪费在整理数据,最后半天写了个脚本来整理。。。 特此在国庆假期结束前记录一下。。。

1.读取文件夹名称

# 读取文件名称并写入txt文件 import os path = r'G:\ADNI\ADNI1\T1\MCI' file = open("MCI.txt", 'w') for name in os.listdir(path): # print(name) name = name + '\n' file.write(name) file.close() print("保存文件成功")

2.创建文件夹

import os path1 = 'G://ADNI//ADNI1//1.5T//MCI' # 指定名称文件夹所在路径 path2 = 'G://ADNI//ADNI1//3T//MCI//' # 新建文件夹所在路径 # 根据path1中文件夹的名称在path2中创建相应的文件夹 def MkDir(): dirs = os.listdir(path1) for dir in dirs: file_name = path2 + str(dir) os.mkdir(file_name) # 根据txt中的名称创建文件夹 def MkDir2(): # Cname_MCI中存放是的要创建的文件夹名称 with open("Cname_MCI.txt", 'r') as f: for line in f.readlines(): linestr = line.strip() linestrlist = linestr.split("\t") file_name = path2 + linestrlist[0] os.mkdir(file_name)

3.移动文件

# 移动文件 import shutil path = 'G:\\ADNI\\ADNI1\\T1\\MCI\\' sourcepath = 'G:\\ADNI\\ADNI1\\T1\\MCI\\' targetpath = 'G:\\ADNI\\ADNI1\\T1\\MCI\\' with open("MCI.txt", 'r') as f: for line in f.readlines(): linestr = line.strip() linestrlist = linestr.split("\t") i = linestrlist[0] i = i[0:10] sourceDir = sourcepath + linestrlist[0] + '\\' + 'ADNI' + '\\' + i targetDir = targetpath shutil.move(sourceDir, targetDir)

shutil.move 用来移动文件

4.删除文件夹

import os import shutil path = 'G:\\ADNI\\ADNI1\\T1\\MCI\\' with open("MCI.txt", 'r') as f: for line in f.readlines(): linestr = line.strip() linestrlist = linestr.split("\t") i = linestrlist[0] repath = path + i # os.remove(path) shutil.rmtree(repath)

删除这里在用的时候出了点问题,使用 os.remove 的时候显示拒绝访问,然后看了下面这个博文才知道 os.remove 不能用来删除文件夹。于是采用了 shutil 的 rmtree 函数。 参考:https://blog.csdn.net/wudj810818/article/details/51076953

其实大家最终的目的肯定不会只有这么简单的批量创建、移动、删除,(如果是就当我没说),但是组合一下,就可以创建一个文本来记录操作的文件或文件夹,然后加入一些 for 循环或 if 判断,就可以达到自己更复杂的目的了。

鄙人利用一些信息对ADNI的几千张MRI进行了一些挑选分类,在用脚本之前手动分了三天,越分越乱。

其中涉及到的实际名称请各位忽略,路径中的 \ 和 / 自己用对就行了,我这里没有细究,跑起来结果对了就没留意,也没有放到函数里,就只是简单记录一下吧。有时间再多了解了解 shutil 吧。

最后一句:工欲善其事必先利其器,所有的机械式、重复式工作尽量想着交给机器来做。

最新回复(0)