Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python写入文件:TypeError:每行一个如何?_Python_Io - Fatal编程技术网

Python写入文件:TypeError:每行一个如何?

Python写入文件:TypeError:每行一个如何?,python,io,Python,Io,我的代码有什么问题? 结果是有240个浮点数的列表,我想将它们写入文件,每行一个 编辑 是的,正如马丁指出的,我得到了这样的文件 f = open('freq.txt', 'w') def format(value): return "%.5f" % value formatted = [format(float(v)) for v in result] f.write(str(formatted)) 我只想要数值。试试这个: ['56337.19531', '48429.5585

我的代码有什么问题? 结果是有240个浮点数的列表,我想将它们写入文件,每行一个

编辑 是的,正如马丁指出的,我得到了这样的文件

f = open('freq.txt', 'w')

def format(value):
    return "%.5f" % value

formatted = [format(float(v)) for v in result]
f.write(str(formatted))
我只想要数值。

试试这个:

['56337.19531', '48429.55859', '44960.00000', '41631.85938', '35788.30469', '33180.00000',

该错误消息告诉您什么是错误的:
value
是字符串,而不是浮点。您只需将其转换为:

f = open('freq.txt', 'w')

def format(value):
    return "%.5f" % float(value)

formatted = [format(v) for v in result]
f.writelines(formatted)
f.close()
您可能并不真的想将列表写入文件。您可能希望每个数字都有自己的行。为此,您需要使用
str.join()

更好的方法是使用
os.linesep

f.write('\n'.join(formatted))

我认为,
result
当前包含字符串列表,而不是浮点列表。即使每个字符串只包含一个浮点数,也必须指示Python要将它们视为浮点而非字符串。 为此,您需要强制转换它们:
float(val)
从字符串“val”返回一个浮点值。 因此,您的代码应该是:

import os
f.write(os.linesep.join(formatted))
或者,如果您希望始终强制转换给定给函数的参数以避免进一步出现如下错误:

f = open('freq.txt', 'w')

def format(value):
    return "%.5f" % value

formatted = [format(float(v)) for v in result]
f.write(str(formatted))

不,结果是240个字符串。您从未将这些字符串转换为浮点数。您试图实现什么?目前,您正在向文件中写入“字符串化”列表,这可能不是您想要的。@MartijnPieters否,result.sort(key=float)。@ForceBru我想在文件中写入240个float。@milenko:对不起,什么?排序与此有什么关系?有效,但我希望每行一个。因此,如果writelines没有每行一个,请尝试以下操作:f.write('\n'.join(格式化))
f = open('freq.txt', 'w')

def format(value):
    return "%.5f" % value

formatted = [format(float(v)) for v in result]
f.write(str(formatted))
f = open('freq.txt', 'w')

def format(value):
    return "%.5f" % float(value)

formatted = [format(v) for v in result]
f.write(str(formatted))