直接将python输出到linux文件
我有一个用python编写的脚本,我正在ubuntu上运行。我希望将此命令的输出定向到该文件中直接将python输出到linux文件,python,linux,Python,Linux,我有一个用python编写的脚本,我正在ubuntu上运行。我希望将此命令的输出定向到该文件中 打印str(kFx)+'、'+str(kFy)+'、'+str(kFz) 理想情况下,我会使用python.py>file.txt,但脚本中有一些交互部分,如果我将输出重定向到文件,则无法使用这些部分 我尝试将代码更改为此,但出现语法错误。我确实是第一次使用python,所以请原谅我缺乏知识 print (str(kFx) + ',' + str(kFy) + ',' + str(kFz) , fil
打印str(kFx)+'、'+str(kFy)+'、'+str(kFz)
理想情况下,我会使用python.py>file.txt,但脚本中有一些交互部分,如果我将输出重定向到文件,则无法使用这些部分
我尝试将代码更改为此,但出现语法错误。我确实是第一次使用python,所以请原谅我缺乏知识
print (str(kFx) + ',' + str(kFy) + ',' + str(kFz) , file=open("output.txt", "a"))
有什么办法吗
谢谢,,
Alex您可以像以前一样使用
file=open(“output.txt”,“a”)
打开文件。那你就不用打印了
file.write(str(kFx) + ',' + str(kFy) + ',' + str(kFz))
因为您是在附加模式下打开文件的(在打开模式下用“a”表示),所以它会将此字符串添加到文件的末尾。您可能还需要在字符串后添加新行:
file.write("\n")
当你写完后:
file.close()
如果使用with关键字;文件流将仅在块内保持打开状态。那你就不必记得做完后把它关上了
with open('test.output', 'w') as f:
f.write('{0},{1},{2}\n'.format(kFx, kFy, kFz))
如果您想附加到像echo“test”>>test.txt这样的文件,而不是echo“test”>test.txt这样的文件
然后只需将Python 3上的打开模式更改为“a”而不是“w”,它可能看起来像:
with open("output.txt", "a") as file: # append to the file
print(*kF, sep=', ', file=file)
# etc...
为了便于阅读,我在逗号后面加了空格。看
在Python 2上,您可以在脚本顶部添加来自uuu future uuu的。导入print u函数
,并手动将其转换为字符串
print(kFx, kFy, kFz, sep=', ', file=file)
您可以使用kF
对象代替kFx
,kFy
,kFz
,例如元组/列表:
kF = "kFx value", "kFy value", "kFz value"
或者为了可读性,您可以创建自定义类:
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
语法。如果需要可变对象,可以:
在Python2上,可以使用类Point3D:pass
部分模拟它
要获得更丰富的功能,您可以:
要运行这个和其他需要PyPI提供第三方Python包的代码示例,您可以(要安装,请运行: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"}
您可能正在使用Python2。如果要使用
print()
函数(而不是语句),请将打印更改为或在代码文件顶部放置一个。要关闭文件,即使发生异常,也可以使用with
-语句。另外,您可以调用print()函数来格式化输入,而无需调用str()
,也无需手动压缩字符串。按照您的指令操作,效果非常好。谢谢:)“\n”
丢失。您不需要手动调用str()
,format()
为您执行此操作。您可以省略格式中的数字:'{},{},{}\n'.format(kFx,kFy,kFz)
。非常感谢您纠正我的错误,因为我不知道python中的“a”选项是什么。谢谢:)
print(*attr.astuple(kF), sep=', ', file=file)
# -> kFx value modified, kFy value, kFz value
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"}