【问题标题】:BioPython Entrez not returning results when called as a moduleBioPython Entrez 在作为模块调用时不返回结果
【发布时间】:2015-12-03 03:42:50
【问题描述】:

我正在尝试使用 PubMed 的 Entrez 通过 BioPython 模块搜索论文。我遇到的问题是,当我将搜索脚本作为独立脚本运行时,它可以工作,但是当我从另一个脚本调用它时,它会返回一个空结果。我已经包含了下面的示例。

PaperSearch.py​​

from Bio import Entrez

def search(query):
    Entrez.email = 'me@example.com'
    handle = Entrez.esearch(db='pubmed',
                        sort='relevance',
                        retmax='50',
                        retmode='xml',
                        term=query)
    results = Entrez.read(handle)
    return results

if __name__ == '__main__':
    results = search('cancer')
    print(results)

main.py

import PaperSearch

query = 'cancer'
results = PaperSearch.search(query)
print results

这是 Windows 7 上的 Python 2.7。

谢谢

【问题讨论】:

    标签: biopython


    【解决方案1】:

    模块文件名为 PaperSearch.py​​,但您似乎没有导入正确的名称。

    将 Main.py 更改为:

    import PaperSearch
    
    query = 'cancer'
    results = PaperSearch.search(query)
    print results
    

    【讨论】:

    • 感谢 azalea,看来我很擅长在为 stackoverflow 复制和整理代码时犯错。不幸的是,这不是问题
    • 那我就不知道了。您的代码在我的机器上按预期运行,并且您的答案与您的原始代码完全相同,只是在您的原始代码中,您仍然使用了错误的模块名称。
    • 是的,当我调试它时真的很沮丧,因为我可以自己运行 PaperSearch.py​​ 并获得正确的结果,但是当我调用它时它不会返回任何内容。当我开始使用它时,我会在 Linux 中尝试它,并且可能会看到它按应有的方式运行。不过,感谢您的帮助和时间。
    【解决方案2】:

    为了解决这个问题,我不得不从 PaperSearch.py​​ 中调用 def 然后返回输出。

    PaperSearch.py​​

    from Bio import Entrez
    
    def search(query):
        Entrez.email = 'me@example.com'
        handle = Entrez.esearch(db='pubmed',
                        sort='relevance',
                        retmax='50',
                        retmode='xml',
                        term=query)
        results = Entrez.read(handle)
        return results
    
    def start_search(query):
        papers = search(query)
    
        return papers
    
    if __name__ == '__main__':
        results = search('cancer')
        print(results)
    

    main.py

    import PaperSearch
    
    query = 'cancer'
    results = PaperSearch.start_search(query)
    print results
    

    不确定这是否是因为我在 Windows 上运行,但还没有测试过任何 Linux,因为我正在写这篇文章,目前只能在 Windows 上运行。

    【讨论】:

      猜你喜欢
      • 2014-11-04
      • 1970-01-01
      • 2012-11-19
      • 2023-02-06
      • 2016-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      相关资源
      最近更新 更多