如何将控制台输出写入文本文件

8

我是编程新手,我已经在网页上搜索了这个问题的答案,并尝试了很多可能性,但都没有成功。目前我已经成功地将电位器连接到我的树莓派上并在控制台上获取了数值,但我不知道如何将这些数值保存到文本文件中。以下是我的代码:

 #!/usr/bin/python
import spidev
import time

#Define Variables
delay = 0.5
ldr_channel = 0

#Create SPI
spi = spidev.SpiDev()
spi.open(0, 0)

def readadc(adcnum):
  # read SPI data from the MCP3008, 8 channels in total
  if adcnum > 7 or adcnum < 0:
    return -1
  r = spi.xfer2([1, 8 + adcnum << 4, 0])
  data = ((r[1] & 3) << 8) + r[2]
  return data

while True:
  ldr_value = readadc(ldr_channel)
  print ('---------------------------------------')
  print("LDR Value: %d" % ldr_value)
  time.sleep(delay)
  file = open('data.txt','w')
  file.write("LDR Value: %d" % ldr_value)
  file.close()` 

从代码中可以看出,我可以把最后一个值写入到data.txt中,但无法将所有的值按时间顺序写入。非常感谢您提前的帮助,对于我这个新手很抱歉。
1个回答

16

当你在终端中执行一个文件时,你可以像这样将该脚本的输出重定向到一个文件中:

$ python script.py > /the/path/to/your/file

在Python中,您只需要将sys.stdout设置为一个文件,然后所有的打印输出将被重定向到/the/path/to/your/file

import sys
sys.stdout = open('/the/path/to/your/file', 'w')

不要忘记在脚本结尾关闭文件;)

sys.stdout.close()

我该怎么做? - Dani DcTurner
@maguri 如果我想要将所有脚本输出到特定文件,需要做什么?甚至包括变量的赋值,比如 a=2,都要输出到文件中? - dmitriy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接