自己写的小程序

1. 生成json

一个文件夹(只有001)

# -*- coding: utf-8 -*-
import os
f_train=open("/home/workstation/KPConv-xin/Data/HighRelief/train_test_split/shuffled_train_file_list.json",'w')
f_test=open("/home/workstation/KPConv-xin/Data/HighRelief/train_test_split/shuffled_test_file_list.json",'w')
f_val=open("/home/workstation/KPConv-xin/Data/HighRelief/train_test_split/shuffled_val_file_list.json",'w')
list_train=[]
list_test=[]
list_val=[]

def writename():
    list_train.append('[')
    list_test.append('[')
    list_val.append('[')
    path = "/home/workstation/KPConv-xin/Data/HighRelief/001/obj"
    # 该文件夹下所有的文件(包括文件夹)
    filename_list = os.listdir(path)  # 返回指定路径下的文件和文件夹列表
    filename_list.sort()  # 以字符串的数字从小到大排序 
    # filename_list.sort(key=lambda x: int(x[13:15]))  # 以字符串的第14到16位的数字从小到大排序   

    # 遍历所有文件
    i=0
    for files in filename_list:
        i+=1
        # if object_class in filelist[0]:    #如果文件中有这个前缀,则终止
        #   break
        # 原来的文件路径
        Olddir = os.path.join(path, files)
        # 如果是文件夹则跳过
        if os.path.isdir(Olddir):  # 用于判断对象是否为一个目录。
            continue
        # 文件名
        filename = os.path.splitext(files)[0]
        if i % 6 == 0:
            list_test.append('"'+'HighRelief_benchmark'+'/'+'001'+'/'+filename+'"'+','+' ')
            print('test:',filename)
        elif i % 10 ==0:
            list_val.append('"' + 'HighRelief_benchmark' +'/'+'001'+'/' + filename + '"' + ',' + ' ')
            print('val:', filename)
        else:
            list_train.append('"'+'HighRelief_benchmark'+'/'+'001'+'/'+filename+'"'+','+' ')
            print('train:', filename)
    list_train[-1] = list_train[-1].split(',')[0]
    list_test[-1]=list_test[-1].split(',')[0]
    list_val[-1]=list_val[-1].split(',')[0]
    list_train.append(']')
    list_test.append(']')
    list_val.append(']')
    f_train.writelines(list_train)
    f_test.writelines(list_test)
    f_val.writelines(list_val)
writename()
f_train.close()
f_test.close()
f_val.close()

二个文件夹(可能还有001 002 003)

# -*- coding: utf-8 -*-
import os
f_train=open("/home/workstation/t/shuffled_train_file_list.json",'w')
f_test=open("/home/workstation/t/shuffled_test_file_list.json",'w')
f_val=open("/home/workstation/t/shuffled_val_file_list.json",'w')
list_train=[]
list_test=[]
list_val=[]

def writename():
    list_train.append('[')
    list_test.append('[')
    list_val.append('[')
    path1 = "/home/workstation/test"
    # 该文件夹下所有的文件(包括文件夹)
    filename_list1 = os.listdir(path1)  # 返回指定路径下的文件和文件夹列表
    print(filename_list1)
    for number in filename_list1:
        path = path1+'/'+number+"/obj"
        filename_list = os.listdir(path)
        filename_list.sort()  # 以字符串的数字从小到大排序 
    # filename_list.sort(key=lambda x: int(x[13:15]))  # 以字符串的第14到16位的数字从小到大排序   

    # 遍历所有文件
        i=0
        for files in filename_list:
            i+=1
        # if object_class in filelist[0]:    #如果文件中有这个前缀,则终止
        #   break
        # 原来的文件路径
            Olddir = os.path.join(path, files)
        # 如果是文件夹则跳过
            if os.path.isdir(Olddir):  # 用于判断对象是否为一个目录。
                continue
        # 文件名
            filename = os.path.splitext(files)[0]
            if i % 6 == 0:
                list_test.append('"'+'HighRelief_benchmark'+'/'+number+'/'+filename+'"'+','+' ')
                print('test:',filename)
            elif i % 10 ==0:
                list_val.append('"' + 'HighRelief_benchmark' +'/'+number+'/' + filename + '"' + ',' + ' ')
                print('val:', filename)
            else:
                list_train.append('"'+'HighRelief_benchmark'+'/'+number+'/'+filename+'"'+','+' ')
                print('train:', filename)
    list_train[-1] = list_train[-1].split(',')[0]
    list_test[-1]=list_test[-1].split(',')[0]
    list_val[-1]=list_val[-1].split(',')[0]
    list_train.append(']')
    list_test.append(']')
    list_val.append(']')
    print('***',list_val)
    print(len(list_train),len(list_test),len(list_val))
    f_train.writelines(list_train)
    f_test.writelines(list_test)
    f_val.writelines(list_val)
writename()
f_train.close()
f_test.close()
f_val.close()

2. 把txt中的某一列数替换为其他文件的某一列

法一

#import codecs
f_yuan = open('001_000_001.pts','r', encoding='utf-8') # 打开txt文件,以‘utf-8'编码读取
lines_yuan = f_yuan.readlines()  # 以行的形式进行读取文件
f_xin = open('001_000_000.pts','r', encoding='utf-8')
lines_xin = f_xin.readlines()
list1 = []
list2 = []
for i in  range (len(lines_xin)):
    yuan_a = lines_yuan[i].split()
    yuan_b = yuan_a[0:2]  # 这是选取需要读取的位数
    list1.append(yuan_b) # 将其添加在列表之中
   
    xin_a = lines_xin[i].split()
    xin_b = xin_a[2:3]  # 这是选取需要读取的位数
    list2.append(xin_b) # 将其添加在列表之中
f_yuan.close()
f_xin.close()
#下面是最后生成的文件
vv=3
f = open("{}.pts".format(vv),'w')
for i in range(len(list1)):
    a=str(list1[i][0])+' '+str(list1[i][1])+' '+str(list2[i][0])
    f.write(a+'\n')
f.close()

法二

import numpy as np
data1 = np.loadtxt('C:/Users/ZH/Desktop/001_000_001.pts')
yuan_xy = data1[:,:2]
data2 = np.loadtxt('C:/Users/ZH/Desktop/001_000_000.pts')
xin_z = data2[:,2]
xin_z=np.expand_dims(xin_z,axis = 1)
finally_xyz = np.concatenate([yuan_xy,xin_z],axis = 1)
print(yuan_xy.shape)
print(xin_z.shape)
print(finally_xyz)
np.savetxt('C:/Users/ZH/Desktop/3333333333333.pts',finally_xyz,fmt= '%.06f')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值