【问题标题】:Running with IDLE vs running the script使用 IDLE 运行与运行脚本
【发布时间】:2018-05-25 12:43:00
【问题描述】:

所以我有一些 Python 代码(运行 Python 2.7.12),它使用 VEP 针对特定的转录本注释 vcf 文件。

当我通过双击它(或从命令提示符运行它)运行脚本时,它会给出以下错误:

C:\annotatetsca_KH\annotate.py:364: UnicodeWarning: Unicode 相等比较未能将两个参数转换为 Unicode - 将它们解释为不相等

如果成绩单在指定的成绩单中:

这会导致某些变体无法针对指定的转录本进行注释。但是,如果我将脚本加载到 IDLE 中,然后通过 IDLE 运行完全相同的代码,则不会出现此错误,并且变量已正确注释。

有谁知道为什么通过 IDLE 运行脚本会产生不同的结果?据我所知,以及与我交谈过的一些同事,IDLE 和 Python 应该以完全相同的方式对待一切。有没有人知道一种方法来绕过必须通过 IDLE 运行脚本以避免此错误,因为该脚本被许多不熟悉 Python/IDLE 的人使用,并且会发现只运行脚本要容易得多双击它(就像任何其他 Windows 应用程序一样)。

编辑(已解决):

我找到了问题的原因。成绩单列表中的几份成绩单,最后有一个空格。似乎 IDLE 会去除尾随空格,但直接运行 python 脚本不会。因此,当直接运行它时,尾随空格被转换为“\xa0”,因此当它试图将脚本与指定列表中的一个匹配时,它不匹配。我已经删除了所有空格,它工作正常,我还会添加一行以在脚本列表中加载时删除所有空格!

【问题讨论】:

  • 不要犹豫,将您的解决方案发布为解决方案。

标签: python windows bioinformatics vcf-variant-call-format


【解决方案1】:

我找到了问题的原因。成绩单列表中的几份成绩单末尾有一个空格。似乎 IDLE 会去除尾随空格,但直接运行 python 脚本不会。因此,当直接运行它时,尾随空格被转换为“\xa0”,因此当它试图将脚本与指定列表中的一个匹配时,它不匹配。我已经删除了所有空格,它工作正常,我还会添加一行以在脚本列表中加载时删除所有空格!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2011-01-12
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多