Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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-将传感器数据写入文件_Python - Fatal编程技术网

Python-将传感器数据写入文件

Python-将传感器数据写入文件,python,Python,我正试图写一个代码,我可以从模拟传感器中获取数据,并希望将数据写入.txt文件。我做了一些研究并编写了这段代码- #!/usr/bin/env python # -*- coding:utf-8 -*- import spidev import time spi = spidev.SpiDev() spi.open(0, 0) datafile = file.open("temperature.txt", "w") def ReadChannel(channel): adc = s

我正试图写一个代码,我可以从模拟传感器中获取数据,并希望将数据写入.txt文件。我做了一些研究并编写了这段代码-

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import spidev
import time

spi = spidev.SpiDev()
spi.open(0, 0)
datafile = file.open("temperature.txt", "w")

def ReadChannel(channel):
    adc = spi.xfer2([1, 8+channel <<4, 0])
    data = ((adc[1]& 3) << 8) + adc[2]
    return data

def ConvertVolts(data, places):
    volts = (data*3.3)/float(1023)
    volts = round(volts, places)
    return volts

def ConvertTemp(data, places):
    temp = ((data*200)/float(1023))-50
    temp = round(temp, places)
    return temp

temp_channel = 0
delay = 5

while True:
    temp_level = ReadChannel(temp_channel)
    temp_volts = ConvertVolts(temp_level, 2)
    temp = ConvertTemp(temp_level, 2)

    print"Temperature (deg F): ", temp
    datafile.write(str(temp)+"\n")
    time.sleep(delay)

datafile.close()
#/usr/bin/env python
#-*-编码:utf-8-*-
导入spidev
导入时间
spi=spidev.spidev()
spi.open(0,0)
datafile=file.open(“temperature.txt”、“w”)
def读取通道(通道):

adc=spi.xfer2([1,8+通道我认为您的文件输出流永远不会刷新到磁盘,因为您只是写入文件,然后用control-c结束循环,对吗

也许试着让循环运行10次,然后关闭文件,作为一种尝试。
您是否获得了正确的打印温度输出?

为什么不使用内置的日志记录功能?那么它可能看起来像这样

import logging

logging.basicConfig(filename=PATHTOFILE, loglevel=logging.INFO)
然后你可以:

logging.info("TEXTTOWRITETOTHEFILEHERE")
而不是datafile.write(…) 如果存在,它将附加到文件中,并向其中添加日期/时间。它还将处理文件,例如close()等。 不应该需要延迟!

更改线路:

datafile = file.open("temperature.txt", "w")
为此:

datafile = open("temperature.txt", "w")
因为它现在正在为我工作。如果仍然没有写入文件,请检查传感器数据的获取。如果temp变量打印正确,请阅读以下内容

为了更好地使用关键字, 因为它包括.close()甚至try/finally块(非常适合循环公式)。您可能需要使用“a”模式添加数据,然后使用“w”模式重写数据:

while True:
    #read temp here
    with open("temperature", "a") as datafile:
        datafile.write(temp)
与其说不那么一致,不如说:

datafile = open("temperature.txt", "w")
while True:
    #temp here
    datafile.write(temp)
datafile.close()

它实际上永远不会关闭文件…

当您使用
w
a
标志时是相同的,还是只是
w
不起作用?此外,您是否有权在该文件夹(windows/linux)中写入文件和执行其他操作?另外,您不需要执行
file.open
,只需执行
open
即可。嘿,感谢您的输入。我按照您的建议使用了open命令。我还使用了chmod u+rw filename.py,但它仍然不会在文件中写入任何内容。