将python直接输出到linux fi

2024-07-02 10:43:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我用一个python编写了一个python脚本。我希望将此命令的输出定向到文件中。在

print str(kFx) + ',' + str(kFy) + ',' + str(kFz)

我最好使用python.py>;文件.txt但是脚本有一些交互部分,如果我将输出重定向到一个文件,我将无法使用这些部分。在

我试着把代码改成这样,但是我得到了语法错误。我确实是第一次使用python,所以请原谅我缺乏知识。在

print (str(kFx) + ',' + str(kFy) + ',' + str(kFz) , file=open("output.txt", "a"))

有什么办法吗?在

谢谢你, 亚历克斯


Tags: 文件代码py命令gttxt脚本重定向
3条回答

在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?

在Python2上,您可以在脚本的顶部添加from __future__ import print_function,并手动转换为字符串", ".join(map(str, kF)),或者仅仅:

^{pr2}$

您可以使用kF对象来代替kFxkFykFz,例如元组/列表:

kF = "kFx value", "kFy value", "kFz value"

或者为了可读性,您可以use ^{}创建一个自定义类:

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.xkF.ykF.z语法。如果需要可变对象,可以use ^{}

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')

在Python2上,可以使用class Point3D: pass部分模拟它。在

要获得更丰富的功能,您可以try ^{} 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 ^{} 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"}

您可以像以前一样用file=open("output.txt", "a"))打开文件。那你就不用打印了

file.write(str(kFx) + ',' + str(kFy) + ',' + str(kFz))

因为您在append模式下打开了文件(在open中用“a”表示),它会将这个字符串添加到文件的末尾。您可能还需要在字符串后添加新行:

^{pr2}$

写完后:

file.close()

如果使用with关键字;则文件流将只在块内保持打开状态。然后你就不必记得当你完成的时候把它关上。在

with open('test.output', 'w') as f:
    f.write('{0},{1},{2}\n'.format(kFx, kFy, kFz))

如果您想附加到像echo“test”这样的文件中>>;测试.txt不回显“测试”>;测试.txt 然后把打开模式改成“a”而不是“w”

相关问题 更多 >