小编程(一):Python批量文件的编辑

【Python】批量文件的编辑

       开门见山,先上个图:左边框是要编辑的批量.pts文件,中间框是每个.pts文件的内容格式,下面框是用matlab加载失败的提示。 小编程(一):Python批量文件的编辑_第1张图片

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

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

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


       批量修改文件的类型,代码很简单【注意缩进】,如下:
import os
for 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 os
i=1
for file in os.listdir("."): 
    if os.path.splitext(file)[1] == ".jpg":
	i=i+1
	os.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:
        break
openFileHandle.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 os
NumofLines=[1,2,3,72] 
j=0
k=1
for 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文件问题,若有其它解决方案,望不吝赐教。

你可能感兴趣的:(Python,.pts文件,python,批量文本编辑)