情境:今天在做人工智能课题。要把做好的图像的文件夹一个个改名改成患者的id_label,结果写错了,忘了加"_label",40多个文件又懒得一个个改,就学了一下用python批量改文件,这次用了os包。
os包的应用
参考链接:https://www.jianshu.com/p/6b699e9cea1f
思路:获取所有的文件夹名字,组成一个列表。写一个循环,历遍这个列表,把每个文件夹的名字取出改成id_label。
要用的包:os包
应用的代码
path = 'D:/AIproject/0/_jpg/' #先指定一个路径,可以理解为一个working diretory
filename = os.listdir(path + 'label/')
#将label文件夹里的所有文件名都列出来形成一个列表,理想情况是这个列表里有所有病人的id号
for i in filename: #建立一个循环来历遍整个列表
name = i
newname = i + '_label'
#以上两个变量是旧的名字和新的名字
os.rename(path+'label/'+name,path + 'new/' + newname)
#os.rename(oldpath,newpath),这里的path要精确到文件名,因为会连着文件名一起改掉,可以看下面语法里的6
newfilename = os.listdir(path + 'new/')
newfilename #看看新的名字对不对
补充一些语法
所有path指绝对路径,写的时候均应该加上引号写成字符串
**在windows里path路径用的是 \ ,但是在python里应该使用 / **
-
os.name
输出字符串指示正在使用的平台。如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix'。(不用加括号) -
os.getcwd()
函数得到当前工作目录,即当前Python脚本工作的目录路径。(get current working dirtory) -
os.listdir( path )
返回指定目录下的所有文件和目录名。当前目录下的,路径要绝对路径,不会往深层递归 -
os.mkdir( path )
创建新目录,path为一个字符串,表示新目录的路径,相当于mkdir命令 - 几个删除命令:
-os.rmdir( path )
删除目录,只能删除空文件夹,文件夹里有东西会返回OSError
-os.removedir( path )
递归删除目录。类似于rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(报错一般代表你文件夹里有东西)
-os.remove( path )
删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError -
rename(src, dst)
重命名文件,src和dst为两个路径,分别表示重命名之前和之后的路径。
其他的以后用到了再补充吧