将源代码部署到ubuntu-python 2.7后if语句不起作用

将源代码部署到ubuntu-python 2.7后if语句不起作用,python,python-2.7,Python,Python 2.7,我正在从事一个python项目,面临一个问题,我有一段代码,如bellow: if published_to is not '*': if 'T00:00:00.000Z' not in published_to: published_to = published_to.replace('T00:00:00.000Z', '') published_to = published_to.split('-')[::-1] published_t

我正在从事一个python项目,面临一个问题,我有一段代码,如bellow:

if published_to is not '*':
    if 'T00:00:00.000Z' not in published_to:
        published_to = published_to.replace('T00:00:00.000Z', '')
        published_to = published_to.split('-')[::-1]
        published_to = '-'.join(published_to) + 'T00:00:00.000Z'

当我用python 2.7在windows上运行我的服务器时,上面的代码运行得很有魅力,但当我用相同版本的python将项目部署到Ubuntu 16.04时,它会通过“if”语句体运行,无论
发布到
是否等于
*
。那么,有谁能告诉我原因吗?

如果您想检查发布到的
是否等于
'*'
,请使用
=

if published_to != '*':

使用
is not
检查对象标识,这是一个比相等性更强的测试,而不是您在这里寻找的。(基本上,您可以有两个不同的字符串对象,它们包含相同的文本-不同的对象,但它们是相等的)。

您可以显示将
published\u设置为
的代码吗?似乎在这两台服务器上得到了不同的答案。您是否确实验证了发布到
所包含的内容?我的第一个怀疑是Windows系统与非Windows系统的时间存储方式不同。Windows将硬件时钟更改为本地时间。每隔一个系统将硬件时钟更改为UTC,并根据需要转换为本地时间。在您验证了发布到
所包含的内容后,您可以在此处进行检查。谢谢,这是有效的,但为什么“不是”语句在windows上运行,而在Ubuntu上运行?@user2905416:我说不出为什么您可以看到这两个系统之间的行为差异,但这可能是由于不同的Python次要版本或系统之间Python实现的差异造成的。特定系统上的特定Python实现是否使用字符串被视为一个实现细节。