在Python 3中,它可能看起来像:
with open("output.txt", "a") as file: # append to the file
print(*kF, sep=', ', file=file)
# etc...
我逗号的可读性后增加的空间。见What does ** (double star) and * (star) do for parameters?
在Python 2里,你可以在你的脚本的顶部添加from __future__ import print_function
,并转换为字符串手动", ".join(map(str, kF))
或者只是:
print(kFx, kFy, kFz, sep=', ', file=file)
你可以使用kF
对象,而不是kFx
,kFy
,kFz
例如,一个元组/列表:
kF = "kFx value", "kFy value", "kFz value"
或可读性,你可以use collections.namedtuple
创建一个自定义类:
from collections import namedtuple
Point3D = namedtuple("Point3D", "x y z")
kF = Point3D("kFx value", "kFy value", "kFz value")
# -> Point3D(x='kFx value', y='kFy value', z='kFz value')
它使kF.x
,kF.y
,kF.z
语法。如果你需要一个可变的对象,你可以use types.SimpleNamespace
:
from types import SimpleNamespace
kF = SimpleNamespace(x="kFx value", y="kFy value", z="kFz value")
kF.x += " modified"
# -> namespace(x='kFx value modified', y='kFy value', z='kFz value')
在Python 2里,你可以部分地使用它模仿class Point3D: pass
。
对于更丰富的功能,你可以try attrs
package:
#!/usr/bin/fades
import attr # fades.pypi attrs
Point3D = attr.make_class("Point3D", ["x", "y", "z"])
kF = Point3D("kFx value", "kFy value", "kFz value")
kF.x += " modified"
# -> Point3D(x='kFx value modified', y='kFy value', z='kFz value')
要运行这一点,需要从PyPI将第三方Python包的其他代码示例,您可以use fades
for convenience(安装,运行:sudo apt-get install fades
)。虽然没有必要,但您可以手动安装依赖项:pip install attrs
(请确保使用与pip
相同的python
可执行文件运行脚本:head -1 $(command -v pip)
)。
要打印kF
到文件:
print(*attr.astuple(kF), sep=', ', file=file)
# -> kFx value modified, kFy value, kFz value
要保存它以JSON格式:
import json
with open("kF.json", "w", encoding='utf-8') as json_file: # overwrite the file
json.dump(attr.asdict(kF), json_file)
# -> {"x": "kFx value modified", "y": "kFy value", "z": "kFz value"}
您可能正在使用Python 2.无论是打印更改为['打印>>开放( “output.txt”,“a”),str(kFx)+','+ str(kFy)+','+ str(kFz)'](https://docs.python.org/2/reference/ simple_stmts.html#the-print-statement),或者在你的代码文件的顶部放一个['from __future__ import print_function'](https://www.python.org/dev/peps/pep-3105/)想要使用'print()'函数(而不是t)他声明)。 – dhke