Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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输出到linux文件_Python_Linux - Fatal编程技术网

直接将python输出到linux文件

直接将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

我有一个用python编写的脚本,我正在ubuntu上运行。我希望将此命令的输出定向到该文件中

打印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"}