如何提取*.txt文件中的数据并在Python中使用它?
我有一个将(u,v)转换为(s,d)的Python代码:如何提取*.txt文件中的数据并在Python中使用它?,python,import,text-files,Python,Import,Text Files,我有一个将(u,v)转换为(s,d)的Python代码: def d2r(d): r=d*math.pi/180.0 返回(r) def r2d(右): d=r*180.0/math.pi 返回(d) def sd2uv(s、d): r=d2r(d) u=s*math.sin(r) v=s*math.cos(r) 返回(u,v) def uv2sd(u,v): s=math.sqrt((u*u)+(v*v)) r=数学常数2(u,v) d=r2d(r) 如果d
def d2r(d):
r=d*math.pi/180.0
返回(r)
def r2d(右):
d=r*180.0/math.pi
返回(d)
def sd2uv(s、d):
r=d2r(d)
u=s*math.sin(r)
v=s*math.cos(r)
返回(u,v)
def uv2sd(u,v):
s=math.sqrt((u*u)+(v*v))
r=数学常数2(u,v)
d=r2d(r)
如果d<0:
d=360+d
返回(s,d)
u数据存储在u.txt中,每行有一个编号;v数据存储在v.txt中,每行也有一个数字。我的问题是如何从这两个文件中提取数据,然后在Python代码中使用它们来打印(s,d)?谢谢 我认为应该这样做:
with open('u.txt') as uf, open('v.txt') as vf:
for u,v in zip(uf,vf):
print uv2sd(float(u),float(v))
我可以想象两种方法:
with open('u.txt') as u_file, open('v.txt') as v_file:
u_values = u_file.readlines()
v_values = v_file.readlines()
for u, v in zip(u_values, v_values):
print uv2sd(float(u), float(v))
# We can use u_values and v_values again if we need to now
第二种方法是Akavall和gnibbler提出的方法。两个文档中的每一行是否对应另一行?换句话说,第一“U”值与第一“V”值、第二“U”和第二“V”等匹配,作为建议,我会考虑重命名变量u、v、s和d。对于从未见过这段代码的人来说,这可能并不明显。例如,您可以考虑命名为“R2D”“RangsStoTi度”或“RaxsTo-Ox度”。这将帮助像我这样不确定这些值可能意味着什么的人。是的,它们是对应的,谢谢你的建议!虽然OP可能正在读取浮点值,在这种情况下,应该将
int
替换为float
。是的,我刚刚做了。谢谢你。
from itertools import izip, imap
with open('u.txt') as u_data, open('v.txt') as v_data:
for u,v in imap(float, izip(u_data, v_data)):
print uv2sd(u, v)
with open('u.txt') as u_file, open('v.txt') as v_file:
u_values = u_file.readlines()
v_values = v_file.readlines()
for u, v in zip(u_values, v_values):
print uv2sd(float(u), float(v))
# We can use u_values and v_values again if we need to now