我将datetime转换为字符串,然后将其与来自文件的stdout.read中的字符串进行比较。但是“==”比较失败了。
以下是我的代码:
date_input = datetime.datetime.now()
dat = date_input.strftime("%Y-%m-%d %H:%M:%S.%f")
command = 'echo %s > /media/mmcblk0p1/testCard.txt' %dat
try:
stdin, stdout, stderr = self._sshclient.exec_command(command,timeout=10)
command = 'cat /media/mmcblk0p1/testCard.txt'
try:
stdin, stdout, stderr = self._sshclient.exec_command(command, timeout=10)
date_output = stdout.read().decode(encoding='UTF-8')
self.logger.debug("dat=%s date_output=%s ",dat,date_output)
if(date_output == dat): #FAILS
self.logger.debug("read from file successful")
else:
self.logger.debug("read from file unsucessful")
except:
self.logger.exception('%s %s error, readtimeout',
ip, self.__class__.__name__)
self.add_response("read error/timeout")
except :
self.logger.exception('%s %s error, writetimeout',
ip, self.__class__.__name__)
self.add_response("write error/timeout")
dat=2016-09-06 15:49:49.104030 date_output=2016-09-06 15:49:49.104030
read from file unsucessful
dat=2016-09-06 15:49:49.237551 date_output=2016-09-06 15:49:49.237551
read from file unsucessful
我无法弄清楚比较失败,它打印“从文件读取失败”是stdout.read()还是日期时间。
注意:此代码中没有例外,如果我也使用print方法,则值相同。
欢迎任何解决方案
答案 0 :(得分:1)
>>> a
'2016-09-06 15:49:49.104030'
>>> b
u'2016-09-06 15:49:49.104030'
>>> a == b
True
>>> b = b + "\n"
>>> a == b
False
您的某个字符串中可能有空格字符,请使用.strip()
删除它们答案 1 :(得分:1)
您是否尝试过使用.strip()
http://www.tutorialspoint.com/python/string_strip.htm
Example:
if(date_output.strip() == dat.strip()):
如果字符串两端有任何空格字符(我认为有),那么.strip()将它们取出,我们可以比较没有空格字符的字符串。
答案 2 :(得分:1)
echo
在其输出的末尾添加一个新的行字符,因此日期将写入/media/mmcblk0p1/testCard.txt
并带有一个尾随的新行。在您重读时将其剥离,或使用-n
选项echo
来抑制输出上的新行,如下所示:
command = 'echo -n %s > /media/mmcblk0p1/testCard.txt' %dat