从datetime转换后比较字符串时出错

时间:2016-09-06 10:38:10

标签: python datetime

我将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方法,则值相同。

欢迎任何解决方案

3 个答案:

答案 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