Python:如何在终端上使用回车符打印值

时间:2017-08-26 23:25:12

标签: python

当我使用PyCharm运行以下脚本时,在下载过程中不会打印换行符。

但是,当我在终端上运行此脚本时,会打印换行符。

以下是代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-


import time
import ssl
import urllib.request


def UrlOpen(url, filename):
    data = urllib.request.urlopen(url=url, context=ssl.SSLContext(ssl.PROTOCOL_SSLv23))
    size = int(data.headers.get("content-length"))
    with open(filename, "wb") as f:
        count = 0
        now = time.time()
        for i in data:
            count += len(i)
            f.write(i)
            print("\rSize: {} b, Downloaded: {} b, Completed: {} %, Elapsed: {} s, Speed: {} b/s"
                  .format(size,
                          count,
                          int(100 * count / size),
                          int(time.time() - now),
                          count / (time.time() - now)), flush=True, end="")  


if __name__ == "__main__":
    test_url = "http://muhendislik.istanbul.edu.tr/insaat/wp-content/uploads/2015/10/temel_in%C5%9Faat%C4%B1.pdf"
    file_path = "/home/tanberk/Masaüstü/test.pdf"
    UrlOpen(test_url, file_path)

当我在终端上使用此脚本时,如何打印单行?提前谢谢。

1 个答案:

答案 0 :(得分:1)

\r是一种旧式的Mac行终结符或回车符。您的意思是\n换行吗?

print始终包含换行符。您必须使用sys.stdout.write将其排除,或者将来使用end=关键字参数作为print的函数版本。