python 2.7生成包含数据列表的txt文件 我是一个编程新手,甚至更多的是使用Python(我可以在C++中做一些基本的事情)
我正在编写一个朋友不久前为我编写的代码,我想将其输出存储在一个文件中,我认为python 2.7生成包含数据列表的txt文件 我是一个编程新手,甚至更多的是使用Python(我可以在C++中做一些基本的事情),python,file,printing,output,Python,File,Printing,Output,我正在编写一个朋友不久前为我编写的代码,我想将其输出存储在一个文件中,我认为.txt文件非常适合我想做的事情 您将在下面找到2个代码 第一个可以工作,但只在pythonwin的交互窗口中打印数据(我使用的是windows7和python2.7) 它打印类似的内容,这对我的项目非常有用: thrown out: bTUD, K2, MAG B, K1C, K1B, K1A, XTC64 II, REF , LBK, MAG C 1 1 : ['PINKwA', 'GB', 'PINK',
.txt
文件非常适合我想做的事情
您将在下面找到2个代码
第一个可以工作,但只在pythonwin的交互窗口中打印数据(我使用的是windows7和python2.7)
它打印类似的内容,这对我的项目非常有用:
thrown out: bTUD, K2, MAG B, K1C, K1B, K1A, XTC64 II, REF , LBK, MAG C
1 1 : ['PINKwA', 'GB', 'PINK', 'TUwA'] [ 0.23994351 0.61419796 0.00956974 0.1362888 ] tet_i 66
1 2 : ['PINKwA', 'GB', 'PINK', 'TUwA'] [ 0.23816363 0.61917833 0.01219634 0.13046169] tet_i 66
1 3 : ['PINKwA', 'GB', 'PINK', 'TUwA'] [ 0.23638376 0.6241587 0.01482295 0.12463459] tet_i 66
1 4 : ['PINKwA', 'GB', 'PINK', 'TUwA'] [ 0.23460388 0.62913907 0.01744955 0.11880749] tet_i 66
1 5 : ['PINKwA', 'GB', 'PINK', 'TUwA'] [ 0.23282401 0.63411944 0.02007616 0.11298039] tet_i 66
...etc.
第二个代码是我尝试使用函数output
和output.write
,但根本不起作用!我缺少python的基本语言技能,我想这就是为什么我无法找到解决方案的原因
第一个代码(打印功能正常)
编辑:下面的代码可以工作,但只导出文件中的一行数据
for target in targets:
name, X, Y, Z, BG = target
target_point = support + (np.array([X,Y,Z]) - support)/(1-BG)
tet_i, bcoords = geometry.containing_tet(tg, target_point)
if tet_i == None:
output = open('output.txt','a')
output.write(str(target[0]))
else:
output = open('output.txt','a')
names = [colors[i][0] for i in tg.tets[tet_i]]
output.write(str(target[0]))
output.write(str(names))
output.write(str(bcoords))
您能帮我找出如何将数据写入文件吗?当您打开文件时,我建议在您的案例中使用
'a'
作为第二个参数,这样文件也将始终被追加,而不是每次调用write方法时都被覆盖。
你在开始时说想要一个.txt
文件,那你为什么不使用一个呢
output=open('output.txt','a')
其次,文件中的写入方法只能接受一个输入。每次要添加内容时,都要调用write方法。在您的情况下,请执行以下操作:
output.write(target[0])
output.write(names)
output.write(bcoords)
output.write(tet_i)
output.write(目标[0])
输出.写入(名称)
输出.写入(bcoords)
输出写入(tet_i)
编辑:此外,您放入文件中的任何内容都必须是字符串。您可以使用
str()
函数将其转换为字符串。要添加到user2571168的解决方案中,我相信output.write()
需要一个字符串,所以请尝试使用str()
转换它们。比如说,
output.write(str(names))
编辑:
这可能会也可能不会解决您的问题,但您应该在完成写入后关闭该文件。例如:
if tet_i == None:
output = open('output.txt','a')
output.write(str(target[0]))
output.close()
else:
output = open('output.txt','a')
names = [colors[i][0] for i in tg.tets[tet_i]]
output.write(str(target[0]))
output.write(str(names))
output.write(str(bcoords))
output.close()
注意对
output.close()
添加了两个调用。如果您的问题仍然存在,请稍后通知我。谢谢,看起来是解决方案,但是我遇到了如下错误:TypeError:应为字符缓冲区对象
,因此,您在文件中写入的任何内容都必须是字符串。如果它不是字符串,您可以使用str(number)
轻松地将其转换为字符串,然后如果您想从文件中读回该数字,您可以使用python中的int()
或float()
内置函数将其转换为正确的格式。谢谢,这样已经更好了。文件已经创建,但是它只包含一行…最后一行,就像所有其他行都被覆盖一样,您能检查上面的msg编辑吗?谢谢,谢谢!这是一个解决了的问题,现在它可以工作了,但文件似乎只包含流程的最后一次迭代,并且它已经覆盖了以前的数据。我对上面的消息进行了编辑,知道代码现在有什么问题吗?谢谢,现在可以了:这个output=open('output.txt','a')
必须放在之前,如果tet\u I==None:
,由于你关于关闭文件的提示,我避免了另一个错误!
if tet_i == None:
output = open('output.txt','a')
output.write(str(target[0]))
output.close()
else:
output = open('output.txt','a')
names = [colors[i][0] for i in tg.tets[tet_i]]
output.write(str(target[0]))
output.write(str(names))
output.write(str(bcoords))
output.close()