【Python】批量文件的编辑

来源:互联网 发布:spss怎么导入excel数据 编辑:程序博客网 时间:2024/05/17 08:39

【Python】批量文件的编辑

       开门见山,先上个图:左边框是要编辑的批量.pts文件,中间框是每个.pts文件的内容格式,下面框是用matlab加载失败的提示。 

       这是最近在做人脸对齐的时候遇到的一个问题:300W数据集中的大量.pts文件的读取问题,由于自己试过用matlab来加载.pts文件,然而并没有成功,手动删除又因为.pts文件确实太多,慢慢修改太难,目前想到一个办法就是删除这几行,然后直接用matlab直接加载数据,供后期训练使用。

       【这是我找到的解决这个问题的方法,若哪位大神有其它解决方案,还望不吝赐教,先在此谢过!!!】

1:同一个文件夹下批量文件的类型修改


       批量修改文件的类型,代码很简单【注意缩进】,如下:
import osfor file in os.listdir("."):     if os.path.splitext(file)[1] == ".jpg":        os.rename(file, os.path.splitext(file)[1]+".png")
       注意:
       (1)将这个.py文件保存到你要修改的文件的同一目录下运行;
       (2)这里是将所有的.jpg文件转换成.png文件,名称保持不变。如果要将.pts转换成.txt,只需要将第三四行相应的位置换了就好,即:.jpg换为.pts,.png换为.txt。

2:同一个文件夹下批量文件的重命名


       批量修改文件的类型,代码很简单【注意缩进】,如下:
import osi=1for file in os.listdir("."):     if os.path.splitext(file)[1] == ".jpg":i=i+1os.rename(file, str(i)+".png")
       注意:
       (1)将这个.py文件保存到你要修改的文件的同一目录下运行;
       (2)这里是将所有的.jpg文件转换成.png文件,名称按照读取的顺序依次为 “1.png” “2.png” 等,如果你要变成其它名字,只需要将str(i)修改为你想要的名称就可以了。

3:删除单个文件的某几行

       删除单个文件的某一些行,代码不复杂【注意缩进】,如下:
NumofLines=[1,2,3,72]                #是指要删除的行,即:第1,2,3,72行。i=1          openFileHandle=open('0.pts','r')     #读取待修改的文件writeFileHandle=open('Temp','w')     #临时文件while 1:    line=openFileHandle.readline()   #读取待修改文件的行    if line:        if i in NumofLines:          #判断当前行数是否为要删除的行数,如果是,则不复制            i=i+1            continue        else:            i=i+1            writeLine='%s'%line      #不是要删除的行就直接复制,写入临时文件              writeFileHandle.write(writeLine)    else:        breakopenFileHandle.close()writeFileHandle.close()#os.remove('0.pts')                  #如果要删除修改之前的文件,只需要加上这一句话就好os.rename('Temp','0.txt')print "Finish!"
       注意:
       (1)将这个.py文件保存到你要修改的文件的同一目录下运行;
       (2)这里是删除了源文件0.pts中的第1,2,3,72行,并保存为0.txt文件。

4:删除批量文件相同的行


       不再赘述,将上面的组装起来就好了【注意缩进】。亲测有效,如有编辑错误之处,还望指出,多谢。
import osNumofLines=[1,2,3,72] j=0k=1for file in os.listdir("."):     if os.path.splitext(file)[1] == ".pts":        j=j+1        k=1        openFileHandle=open(file,'r')        writeFileHandle=open('Temp','w')        while 1:            line=openFileHandle.readline()            if line:                if k in NumofLines:                    k=k+1                    continue                else:                    k=k+1                    writeLine='%s'%line                    writeFileHandle.write(writeLine)            else:                break        openFileHandle.close()        writeFileHandle.close()        os.remove(file)        os.rename('Temp', os.path.splitext(file)[0]+".txt" )



       PS:就如何加载上述格式的.pts文件问题,若有其它解决方案,望不吝赐教。

2 0
原创粉丝点击