国庆七天假,工作六天半。。。 三天时间浪费在整理数据,最后半天写了个脚本来整理。。。 特此在国庆假期结束前记录一下。。。
1.读取文件夹名称
import os
path
= r
'G:\ADNI\ADNI1\T1\MCI'
file = open("MCI.txt", 'w')
for name
in os
.listdir
(path
):
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//'
def MkDir():
dirs
= os
.listdir
(path1
)
for dir in dirs
:
file_name
= path2
+ str(dir)
os
.mkdir
(file_name
)
def MkDir2():
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
shutil
.rmtree
(repath
)
删除这里在用的时候出了点问题,使用 os.remove 的时候显示拒绝访问,然后看了下面这个博文才知道 os.remove 不能用来删除文件夹。于是采用了 shutil 的 rmtree 函数。 参考:https://blog.csdn.net/wudj810818/article/details/51076953
其实大家最终的目的肯定不会只有这么简单的批量创建、移动、删除,(如果是就当我没说),但是组合一下,就可以创建一个文本来记录操作的文件或文件夹,然后加入一些 for 循环或 if 判断,就可以达到自己更复杂的目的了。
鄙人利用一些信息对ADNI的几千张MRI进行了一些挑选分类,在用脚本之前手动分了三天,越分越乱。
其中涉及到的实际名称请各位忽略,路径中的 \ 和 / 自己用对就行了,我这里没有细究,跑起来结果对了就没留意,也没有放到函数里,就只是简单记录一下吧。有时间再多了解了解 shutil 吧。
最后一句:工欲善其事必先利其器,所有的机械式、重复式工作尽量想着交给机器来做。