0

我有两个 python 文件。我在网上找到了我的 test.py 导入 td.py 文件。Td.py 文件查找来自 TelldusCenter 程序的信号。

现在,如果我运行 test.py 文件,它会向我显示从 TelldusCenter 应用程序获得的信号,并且输出类似于:“Door - ON” 现在我喜欢将“Door - ON”文本打印到文件中,但我不知道如何。

这是我的 test.py 文件

#!/usr/bin/env python

import td
import time


def myDeviceEvent(deviceId, method, data, callbackId):
    print '%s' %( td.getName(deviceId) )+' - %s' %(td.methodsReadable.get(method, 'Unknown' ))


td.registerDeviceEvent(myDeviceEvent)



try:
    while(1):
        time.sleep(1)
except KeyboardInterrupt:
            print 'KeyboardInterrupt received, exiting'

“td.registerDeviceEvent(myDeviceEvent)” 现在将输出打印到终端。我尝试将其打印到文件中,但它只会给我错误。

 a = open("output.txt", "w") 
 a.write(td.registerDeviceEvent(myDeviceEvent)) 

Traceback(最近一次调用最后一次):文件“testi.py”,第 11 行,在 a.write(td.registerDeviceEvent(myDeviceEvent)) 类型错误:预期字符缓冲区对象

4

3 回答 3

1

根据我对代码的解释,td.registerDeviceEvent(myDeviceEvent)注册了一个回调。它本身不会产生字符串。这就是为什么您不能输出注册的“结果”。

而是试试这个:

#!/usr/bin/env python

import td
import time

a = open("output.txt", "w") 

def myDeviceEvent(deviceId, method, data, callbackId):
    a.write('%s' %( td.getName(deviceId) ) + ' - %s' %(td.methodsReadable.get(method, 'Unknown')

td.registerDeviceEvent(myDeviceEvent)
于 2013-10-17T07:22:38.867 回答
0

改变

def myDeviceEvent(deviceId, method, data, callbackId):
    print '%s' %( td.getName(deviceId) )+' - %s' %(td.methodsReadable.get(method, 'Unknown' ))

def myDeviceEvent(deviceId, method, data, callbackId):
    with open("Output.txt", "w") as outputFile:
        outputFile.write('%s' %( td.getName(deviceId) )+' - %s' %(td.methodsReadable.get(method, 'Unknown' )))

您可以使用with语句来处理文件及其范围。当您使用with. 这照顾它。

编辑:您可以像这样使用现代字符串格式。在此处阅读更多信息http://docs.python.org/2/library/string.html#string-formatting

def myDeviceEvent(deviceId, method, data, callbackId):
    with open("Output.txt", "w") as outputFile:
        outputFile.write('{} - {}'.format(td.getName(deviceId), td.methodsReadable.get(method, 'Unknown')))
于 2013-10-17T07:27:09.813 回答
0

您应该考虑具有基本配置的日志记录模块:

import logging
FORMAT = '%(asctime)s - %(message)s'
logging.basicConfig(format=FORMAT, filename='Output.txt', level=logging.INFO)

logging.info('My message')

文件Output.txt

2013-10-17 09:26:08,496 - My message
于 2013-10-17T07:28:15.107 回答