V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zbl430
V2EX  ›  Python

各位大佬请进,有点小问题( Python \r)

  •  1
     
  •   zbl430 · 2017-09-15 15:18:48 +08:00 · 1735 次点击
    这是一个创建于 2421 天前的主题,其中的信息可能已经有所发展或是发生改变。
    In [13]: for i in range(1, 5):
        print '\r{0}'.format(i),
        time.sleep(1)
       ....:     
    4 
    
    In [14]: for i in range(1, 5):
        print '{0}\r'.format(i),
        time.sleep(1)
       ....:     
    4
    
    

    上面都是只在最后才打印一个 4,不能 1, 2, 3, 4 的在同一行循环显示,就像下载进度条增量改变一样,请大佬指教

    10 条回复    2017-09-15 16:24:21 +08:00
    zbl430
        1
    zbl430  
    OP
       2017-09-15 15:39:24 +08:00
    ```
    for i in range(1, 5):
    dd = '.'*i
    sys.stdout.write(dd+'\r')
    sys.stdout.flush()
    time.sleep(1)

    ```
    这样可以了,但是 print 依旧不知如何实现
    keysona
        2
    keysona  
       2017-09-15 15:50:47 +08:00
    python3


    import time

    for i in range(100):
    time.sleep(1)
    print('\r{}%'.format(i), end='', flush=True)
    John60676
        3
    John60676  
       2017-09-15 15:52:54 +08:00
    你的意思是 print 输出时不换行吗? py3 可以 print(i,end="") ,py2 可以 print i,
    keysona
        4
    keysona  
       2017-09-15 15:55:27 +08:00
    python2 的 print 会换行的。

    python3 可以取消。
    JimmyMu
        5
    JimmyMu  
       2017-09-15 15:56:38 +08:00
    for i in range(1, 5):
    print '{0} '.format(i),
    sys.stdout.flush()
    sleep(1)
    keysona
        6
    keysona  
       2017-09-15 15:58:21 +08:00
    @JimmyMu

    一个逗号居然可以去换行,见识了!
    John60676
        7
    John60676  
       2017-09-15 15:59:54 +08:00   ❤️ 1
    @keysona py2 可以在后面加个逗号取消
    ltux
        8
    ltux  
       2017-09-15 16:05:13 +08:00
    python 2.X 无法用 print 实现,即使 from __future__ improt print_function,print() 函数也不支持 flush 参数。
    ltux
        9
    ltux  
       2017-09-15 16:06:00 +08:00
    不能 flush 就无法实现。
    zbl430
        10
    zbl430  
    OP
       2017-09-15 16:24:21 +08:00
    @JimmyMu 是这样的,但是需要依赖 sys.stdout.flush() ,谢了
    @ltux 说的对
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2015 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 01:31 · PVG 09:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.