【问题标题】:Why is final output being printed on the terminal even though there is no print statement in this python code?为什么即使此 python 代码中没有打印语句,最终输出也会打印在终端上?
【发布时间】:2017-04-17 18:15:01
【问题描述】:

在下面给定的代码中:

with open("chr2_head25.gtf", 'r') as f,\
    open('test_output.txt', 'w') as f2:
    for lines in f:
        if not lines.startswith('#'):
            f2.write(lines)
    f2.close()

我可以删除以# 开头的行并将输出写入一个新文件。但是,问题是 f2 i.e the output 正在控制台上打印,即使代码上的任何地方都没有打印语句。 为什么会这样?我试图找到解释,但找不到。该程序有效,但我不希望在屏幕上打印大量的data file (f2)

谢谢,

输入文件:这里是名为chr2_head25.gtf的数据文件

#!genome-build v.1.0
#!genome-version JGI8X
#!genome-date 2008-12
#!genome-build-accession GCA_000004255.1
#!genebuild-last-updated 2008-12
2   jgi gene    171 1201    .   -   .   gene_id "scaffold_200001.1"; gene_version "1"; gene_source "jgi"; gene_biotype "protein_coding";
2   jgi transcript  171 1201    .   -   .   gene_id "scaffold_200001.1"; gene_version "1"; transcript_id "scaffold_200001.1"; transcript_version "1"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding";
2   jgi exon    916 1201    .   -   .   gene_id "scaffold_200001.1"; gene_version "1"; transcript_id "scaffold_200001.1"; transcript_version "1"; exon_number "1"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding"; exon_id "scaffold_200001.1.exon1"; exon_version "1";
2   jgi CDS 916 1181    .   -   0   gene_id "scaffold_200001.1"; gene_version "1"; transcript_id "scaffold_200001.1"; transcript_version "1"; exon_number "1"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding"; protein_id "scaffold_200001.1"; protein_version "1";
2   jgi start_codon 1179    1181    .   -   0   gene_id "scaffold_200001.1"; gene_version "1"; transcript_id "scaffold_200001.1"; transcript_version "1"; exon_number "1"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding";
2   jgi exon    614 789 .   -   .   gene_id "scaffold_200001.1"; gene_version "1"; transcript_id "scaffold_200001.1"; transcript_version "1"; exon_number "2"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding"; exon_id "scaffold_200001.1.exon2"; exon_version "1";
2   jgi CDS 614 789 .   -   1   gene_id "scaffold_200001.1"; gene_version "1"; transcript_id "scaffold_200001.1"; transcript_version "1"; exon_number "2"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding"; protein_id "scaffold_200001.1"; protein_version "1";
2   jgi exon    171 435 .   -   .   gene_id "scaffold_200001.1"; gene_version "1"; transcript_id "scaffold_200001.1"; transcript_version "1"; exon_number "3"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding"; exon_id "scaffold_200001.1.exon3"; exon_version "1";
2   jgi CDS 194 435 .   -   2   gene_id "scaffold_200001.1"; gene_version "1"; transcript_id "scaffold_200001.1"; transcript_version "1"; exon_number "3"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding"; protein_id "scaffold_200001.1"; protein_version "1";
2   jgi stop_codon  191 193 .   -   0   gene_id "scaffold_200001.1"; gene_version "1"; transcript_id "scaffold_200001.1"; transcript_version "1"; exon_number "3"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding";
2   jgi five_prime_utr  1182    1201    .   -   .   gene_id "scaffold_200001.1"; gene_version "1"; transcript_id "scaffold_200001.1"; transcript_version "1"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding";
2   jgi three_prime_utr 171 190 .   -   .   gene_id "scaffold_200001.1"; gene_version "1"; transcript_id "scaffold_200001.1"; transcript_version "1"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding";
2   jgi gene    1343    3488    .   +   .   gene_id "scaffold_200002.1"; gene_version "1"; gene_source "jgi"; gene_biotype "protein_coding";
2   jgi transcript  1343    3488    .   +   .   gene_id "scaffold_200002.1"; gene_version "1"; transcript_id "scaffold_200002.1"; transcript_version "1"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding";
2   jgi exon    1343    1612    .   +   .   gene_id "scaffold_200002.1"; gene_version "1"; transcript_id "scaffold_200002.1"; transcript_version "1"; exon_number "1"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding"; exon_id "scaffold_200002.1.exon1"; exon_version "1";
2   jgi CDS 1364    1612    .   +   0   gene_id "scaffold_200002.1"; gene_version "1"; transcript_id "scaffold_200002.1"; transcript_version "1"; exon_number "1"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding"; protein_id "scaffold_200002.1"; protein_version "1";
2   jgi start_codon 1364    1366    .   +   0   gene_id "scaffold_200002.1"; gene_version "1"; transcript_id "scaffold_200002.1"; transcript_version "1"; exon_number "1"; gene_source "jgi"; gene_biotype "protein_coding"; transcript_source "jgi"; transcript_biotype "protein_coding";

如果我这样做:

print(f)
print(f2)
# I get

<_io.TextIOWrapper name='chr2_head25.gtf' mode='r' encoding='UTF-8'>
<_io.TextIOWrapper name='test_output.txt' mode='w' encoding='UTF-8'>

但是,如果代码中没有任何 print 语句,我会在终端上打印 f2 数据(即最终输出)。为什么?

【问题讨论】:

  • 您是否处于交互模式?
  • 我不这么认为。我在 pycharm 上写了代码,这让我遇到了这个问题。但是,然后我使用python code.py 运行了 python 文件,但仍然遇到同样的问题。
  • 关闭f2 在代码中是多余的。我知道。但是,我的问题不同,关闭 f2 无关。
  • 您确定您正在查看的“控制台”实际上并没有连接到test_output.txt,而不是连接到程序的标准输出或附加到程序的标准输出?
  • 我无法使用提供的代码和输入重现您的问题。

标签: python python-3.x terminal output pycharm


【解决方案1】:

与此处评论的许多其他人一样,我已经在 Python2.7 和 Python3.5 中运行了您的代码,但无法重现您所描述的行为。

所以你的问题的正确答案是你自己已经说过的:

"""嗯,在这种情况下,我认为我的计算机存在内部问题。所以,我

无需担心代码

完全"""

【讨论】:

  • 这是有史以来最好的答案! :)
  • @everestial007 :D ,那么点赞呢? :D
  • 好吧,你明白了。
猜你喜欢
  • 2013-01-04
  • 1970-01-01
  • 2020-02-24
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
相关资源
最近更新 更多