更新django和python更新后,Python不再起作用了

时间:2018-03-21 08:24:02

标签: python django

我的网站有python代码。

python --version
Python 2.7.13
./manage.py --version
1.11.11

在更新我的服务器之前,一切都运行良好。一个函数必须读入一个文件,我有类似的东西:

1,"TY - JOUR|T1 - BLABLABLA|.........|AU - name1|AU - name2|......"

我使用以下python代码:

from django.db import models
.....

class Sources(models.Model):
    sourceid = models.IntegerField(primary_key=True)
    ris = models.TextField()
    class Meta:
        db_table = u'sources'

    def extractChain(self,tokens,st):
        for token in tokens:
            if(token.startswith(st)): break

        result = token[5:]

        if(st == "TY"):
            result={
                "JOUR": "journal",
                "BOOK": "book",
                "":""
            }[result]

        return result

    def author(self,tokens,st):
        a=[]
        for token in tokens:
           if(token.startswith(st)): a.append(token[5:])
        return a

    def extractRisVal(self,st):
        tokens = self.ris.split("|")
        result={
            "TY": self.extractChain(tokens,st),
            "T1": self.extractChain(tokens,st),
            "JO": self.extractChain(tokens,st),
            "VL": self.extractChain(tokens,st),
            "IS": self.extractChain(tokens,st),
            "SP": self.extractChain(tokens,st),
            "EP": self.extractChain(tokens,st),
            "PY": self.extractChain(tokens,st),
            "AU": self.author(tokens,st),
            "M1": self.extractChain(tokens,st),
            "ER": self.extractChain(tokens,st)
        }[st]

        return result

Source.sourceid给出1.那没关系。但是当我使用方法extractRisVal(self,st)时:

extractRisVal("TY")

它会一直返回extractRisVal("TY"),而它应该是journal

如果我在Source类中添加测试方法:

def testCode(self):
    a=[]
    tokens = self.ris.split("|")
    for token in tokens:
        if(token.startswith("AU")): a.append(token[5:])
    return a

它返回我想要的东西。所以看起来我的方法参数中的属性标记和st有问题。因为每次我想使用它,它都不起作用。

1 个答案:

答案 0 :(得分:1)

对此的一个解决方案可能是使用以前的版本启动另一个虚拟env或conda env并尝试再次运行代码。