8.python拷贝目录下的文件到另外一个目录下

该脚本从OfficeTrace_1.txt文件读取行数据,提取pos_x和pos_z,并生成对应的264文件名列表。之后,它遍历tiles目录,将匹配到的264文件复制到TargetTiles目录,用于根据轨迹选取3D场景图片。如果目标文件已存在则跳过,不存在则进行复制。
摘要由CSDN通过智能技术生成

脚本应用背景:
从OfficeTrace_1.txt文件中 获取每一行的前两个元素(pos_x,pos_z), 按照 这种格式组织文件
(pos_x,pos_z)tilexxcrfxx.264, 如(0,0)tile0crf31.264。

根据轨迹计算出的264文件,从3D场景all_tiles中天选出本轨迹的 3D场景图片。
在这里插入图片描述

在这里插入图片描述


import os
import shutil
import sys

files = []
# source = "./trace/OfficeTrace_1.txt"
# ori = './tiles'
# tar = './TargetTiles'

# 读入trace.txt ,拼接目录名


def read_trace_table_pos(filename):
    granularity = 5.0
    quality = [15, 19, 23, 27, 31, 35]
    with open(filename) as f:
        lines = f.readlines()
        trace_cnt = 0
        crf_cnt = 0
        for line in lines:
            strs = line.split(" ")

            pos_x = (int)(float(strs[0])/granularity) * granularity #float
            pos_x = str(int(pos_x)) #int -- > string

            pos_z = (int)(float(strs[1])/granularity)*granularity
            pos_z = str(int(pos_z))

            for i in range(0, 4):
                for j in quality:
                    file_crf = str('(' + pos_x + ',' + pos_z + ')' +
                                   'tile' + str(i) + 'crf' + str(j) + '.264')

                    files.append(file_crf)

                    crf_cnt += 1

            trace_cnt += 1

    print(str(trace_cnt) + " trace has been read.")
    print(str(crf_cnt) + " make crf tiles.")

# 从tiles中找出符合的crf文件


def pick_crf_files(ori,tar):

    for i in files:
        ori_path = os.path.join(ori, i)  # 拼接原目标路径

        if (os.path.exists(ori_path)):
            tar_path = os.path.join(tar, i)  # 拼接目标路径

            if (os.path.exists(tar_path)):
                # 已经存在,不再复制
                print("already exist:" + tar_path)
                continue
            else:
                # 原文件存在,目标不存在,复制
                shutil.copyfile(ori_path, tar_path)
                print("copy %s ---> %s"%(ori_path,tar_path))
        else:
            # print the file not exist
            print("missing file:" + ori_path)
            # missnum = missnum +1
            # print(missnum)
            continue


# read_trace_table_pos(source)

# pick_crf_files()

if __name__ == '__main__':

    if len(sys.argv) == 4:
        OfficeTrace_dir = sys.argv[1].strip()
        all_tiles_dir = sys.argv[2].strip()
        target_crf_dir = sys.argv[3].strip()

        print('Calculate the pose according to \'%s\',  and select the target crf \'%s\' from all tiles \'%s\' ' %(OfficeTrace_dir, target_crf_dir,all_tiles_dir))
    else:
        print("format:OfficeTrace_dir all_tiles_dir, target_crf_dir")
        sys.exit()

    read_trace_table_pos(OfficeTrace_dir)

    pick_crf_files(all_tiles_dir,target_crf_dir)

	print("pick_crf_files successfull!")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值