python输出个人信息_如何从Python中的输出中提取特定信息

这段代码从文件中读取包含'Units Per Second','Source Width','Source Height'等信息的行,并使用正则表达式提取数值。目标是将找到的坐标点(如(0.793803,0.136326,0,0.5,0))动态赋值给变量,以便在后续的Mocha Rotoscoping Via Blender脚本中使用。
摘要由CSDN通过智能技术生成

所以我有一个给出输出的代码,我需要做的是把逗号之间的信息拉出来,把它们赋给一个变量,这个变量在被调用时会动态变化。。。这是我的代码:import re

data_directory = 'Z:/Blender_Roto/'

data_file = 'diving_board.shape4ae'

fullpath = data_directory + data_file

print("====init=====")

file = open(fullpath)

for line in file:

current_line = line

# massive room for optimized code here.

# this assumes the last element of the line containing the words

# "Units Per Second" is the number we are looking for.

# this is a non float number, generally.

if current_line.find("Units Per Second") != -1:

fps = line_split = float(current_line.split()[-1])

print("Frames Per Second:", fps)

# source dimensions

if current_line.find("Source Width") != -1:

source_width = line_split = int(current_line.split()[-1])

print("Source Width:", source_width)

if current_line.find("Source Height") != -1:

source_height = line_split = int(current_line.split()[-1])

print("Source Height:", source_height)

# aspect ratios

if current_line.find("Source Pixel Aspect Ratio") != -1:

source_px_aspect = line_split = int(current_line.split()[-1])

print("Source Pixel Aspect Ratio:", source_px_aspect)

if current_line.find("Comp Pixel Aspect Ratio") != -1:

comp_aspect = line_split = int(current_line.split()[-1])

print("Comp Pixel Aspect Ratio:", comp_aspect)

# assumption, ae file can contain multiple mocha shapes.

# without knowing the exact format i will limit the script

# to deal with one mocha shape being animated N frames.

# this gathers the shape details, and frame number but does not

# include error checking yet.

if current_line.find("XSpline") != -1:

# record the frame number.

frame = re.search("\s*(\d*)\s*XSpline", current_line)

if frame.group(1) != None:

frame = frame.group(1)

print("frame:", frame)

# pick part the part of the line that deals with geometry

match = re.search("XSpline\((.+)\)\n", current_line)

line_to_strip = match.group(1)

points = re.findall('(\(.*?\))', line_to_strip)

print(len(points))

for point in points:

print(point)

print("="*40)

file.close()

这给了我一个输出:

^{2}$

例如,我需要的是,能够将(0.793803,0.136326,0,0.5,0)分配给(1x,1y,1z,1w,1s),(0.772345,0.642332,0,0.5,0)到(2x,2y,2z,2w,2s)等,这样无论什么数字填充这些位置,它们都会使用这个值。在

下面是我需要把这些数字放入的代码:#-------------------------------------------------------------------------------

# Name: Mocha Rotoscoping Via Blender

# Purpose: Make rotoscoping more efficient

#

# Author: Jeff Owens

#

# Created: 11/07/2011

# Copyright: (c) jeff.owens 2011

# Licence: Grasshorse

#-------------------------------------------------------------------------------

#!/usr/bin/env python

import sys

import os

import parser

sys.path.append('Z:\_protomotion\Prog\HelperScripts')

import GetDir

sys.path.append('Z:\_tutorials\01\tut01_001\prod\Blender_Test')

filename = 'diving_board.shape4ae'

infile = 'Z:\_tutorials\01\tut01_001\prod\Blender_Test'

import bpy

from mathutils import Vector

#below are taken from mocha export

x_width =2048

y_height = 778

z_depth = 0

frame = 20

def readText():

text_file = open('diving_board.shape4ae', 'r')

lines = text_file.readlines()

print (lines)

print (len.lines)

for line in lines:

print (line)

##sets points final x,y,z value taken from mocha export for blender interface

point1x = (0.642706 * x_width)

point1y = (0.597615 * y_height)

point1z = (0 * z_depth)

point2x = (0.770557 * x_width)

point2y = (0.647039 * y_height)

point2z = (0 * z_depth)

point3x = (0.794697 * x_width)

point3y = (0.0869024 * y_height)

point3z = (0 * z_depth)

point4x = (0.707973* x_width)

point4y = (0.0751348 * y_height)

point4z = (0 * z_depth)

w = 1 # weight

listOfVectors = [Vector((point1x,point1y,point1z)),Vector((point2x,point2y,point2z)),Vector((point3x,point3 y,point3z)),Vector((point4x,point4y,point4z)), Vector((point1x,point1y,point1z))]

def MakePolyLine(objname, curvename, cList):

curvedata = bpy.data.curves.new(name=curvename, type='CURVE')

curvedata.dimensions = '3D'

objectdata = bpy.data.objects.new(objname, curvedata)

objectdata.location = (0,0,0) #object origin

bpy.context.scene.objects.link(objectdata)

polyline = curvedata.splines.new('POLY')

polyline.points.add(len(cList)-1)

for num in range(len(cList)):

x, y, z = cList[num]

polyline.points[num].co = (x, y, z, w)

MakePolyLine("NameOfMyCurveObject", "NameOfMyCurve", listOfVectors)

所以在我有向量的地方,我希望能够放置(p.x,p.y,0.z,p.w,p.s),然后(p2.x,p2.y,p2.zp2.wp2.s)等,这样它就可以根据给定的数发生变化

任何帮助都会很好。。提前谢谢你!在

-杰夫

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值