Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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_Spi - Fatal编程技术网

Python 将变量值输出到文本文件

Python 将变量值输出到文本文件,python,spi,Python,Spi,我对python非常陌生,需要将SPI读入的值输出到文本文件中。我有一个创建文本文件的函数,还有一个读取SPI的函数,但我不知道如何让这两个函数相互作用。我熟悉OOP中的“朋友”概念,但不熟悉python如何在创建可见性方面处理单独的函数。我需要的是将SPI函数的返回值传递给CREATEXT函数,以便存储它 def timeStamp(fname, fmt = '%Y%m%d--%H%M%S_{fname}'): return datetim

我对python非常陌生,需要将SPI读入的值输出到文本文件中。我有一个创建文本文件的函数,还有一个读取SPI的函数,但我不知道如何让这两个函数相互作用。我熟悉OOP中的“朋友”概念,但不熟悉python如何在创建可见性方面处理单独的函数。我需要的是将SPI函数的返回值传递给CREATEXT函数,以便存储它

def timeStamp(fname, fmt = '%Y%m%d--%H%M%S_{fname}'):                       
    return datetime.datetime.now().strftime(fmt).format(fname = fname)

with open (timeStamp('SPI_Inputs'), 'w') as output:     
        output.write('this needs to be adc output')

def readadc(adcnum):
    if adcnum > 7 or adcnum < 0:
        return -1
    r = spi.xfer2([1,8 + adcnum << 4,0])
    adcout = ((r[1] & 3) << 8) + r[2]
    return adcout   #this needs to be put into text file

while True:
    ADC_Val = int(round(readadc(0)/10.24))
    print "Input = ", ADC_Val
    count = count +1
    time.sleep (0.2)

    timeStamp(readadc))
def时间戳(fname,fmt='%Y%m%d--%H%m%S_u{fname}):
return datetime.datetime.now().strftime(fmt).format(fname=fname)
以open(时间戳(“SPI_输入”)和“w”)作为输出:
output.write('这需要是adc输出')
def readadc(adcnum):
如果adcnum>7或adcnum<0:
返回-1

r=spi.xfer2([1,8+adcnum我认为您试图做的是:

def timeStamp(fname, fmt = '%Y%m%d--%H%M%S_{fname}'):                       
    return datetime.datetime.now().strftime(fmt).format(fname = fname)

def write_to_file(str):
    with open (timeStamp('SPI_Inputs'), 'w') as output:     
        output.write(str)

def readadc(adcnum):
    if adcnum > 7 or adcnum < 0:
        return -1
    r = spi.xfer2([1,8 + adcnum << 4,0])
    adcout = ((r[1] & 3) << 8) + r[2]
    return adcout   #this needs to be put into text file

while True:
    ADC_Val = int(round(readadc(0)/10.24))
    write_to_file(ADC_Val)
    print "Input = ", ADC_Val
    time.sleep (0.2)
    print timeStamp(readadc))
def时间戳(fname,fmt='%Y%m%d--%H%m%S_u{fname}):
return datetime.datetime.now().strftime(fmt).format(fname=fname)
def写入文件(str):
以open(时间戳(“SPI_输入”)和“w”)作为输出:
输出写入(str)
def readadc(adcnum):
如果adcnum>7或adcnum<0:
返回-1

r=spi.xfer2([1,8+adcnum def timeSTamp(fname,fmt='%Y%m%d--%H%m%S_{fname}):#格式化文件名return datetime.datetime.now().strftime(fmt)。格式化(fname=fname)并将open(timeSTamp('spi_Inputs'),'w')作为输出:output.write('S需要是adc output')def readadc(adcnum):如果adcnum>7或adcnum<0:返回-1 r=spi.xfer2([1,8+adcnum请将代码添加到问题中,注意格式、缩进等。代码现在已添加,很抱歉,不是要发布未格式化的代码。这对我不起作用,必须将ADC值写入while循环中的文件。OK,尽管此方法给出了预期错误字符缓冲区对象,但ADC输入为obv以前一个字符串我已经更改了写入adc函数,使其接受整数。这意味着它现在将接受ADCVal,但是代码实际上为每个值创建了一个新的文本文件,而不是将它们放入一个。@user370165将打开文件的行更改为使用
'a'
,而不是
'w'
(附加模式而不是写入模式):
open(时间戳('SPI_Inputs'),'a')
我尝试过这个方法,但它并没有真正解决问题。我想我需要重新构造while循环,使其写入文本文件,休眠然后再次写入文本文件,我不需要“打印”行,只需要查看代码是否正常工作。如果要写入同一个文件,最好在开始时打开它nd始终保持打开状态,而不是一次又一次地重新打开。您也可以在完成编写后尝试使用
file.close()