运行 IDLE 与 运行 脚本

Running with IDLE vs running the script

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

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

C:\annotatetsca_KH\annotate.py:364: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal

if transcript in specified_transcripts:

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

有谁知道为什么 运行通过 IDLE 运行脚本会产生不同的结果?据我所知,从我与之交谈过的一些同事那里,IDLE 和 Python 应该完全相同地对待所有事情。并且有没有人知道一种方法来避免通过 IDLE 运行 脚本来避免这个错误,因为这个脚本被许多不熟悉 Python/IDLE 的人使用并且会发现它很多只需双击 运行 脚本(就像任何其他 Windows 应用程序一样)。

编辑(已解决):

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

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