python控制台中怎么控制开始和结束_python中怎么用控制台使用方法

展开全部

本文实例讲述了Python显示进度条的方法,是Python程序设计62616964757a686964616fe4b893e5b19e31333363386231中非常实用的技巧。分享给大家供大家参考。具体方法如下:

首先,进度条和一般的print区别在哪里呢?

答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输出结果。

进度条不然,我们必须再原地输出才能保证他是一个进度条,否则换行了怎么还叫进度条?

最简单的办法就是,再输出完毕后,把光标移动到行首,继续在那里输出更长的进度条即可实现,新的更长的进度条把旧的短覆盖,就形成了动画效果。

可以想到那个转义符了吧,那就是\ r。

转义符r就可以把光标移动到行首而不换行,转义符n就把光标移动到行首并且换行。

在python中,输出stdout(标准输出)可以使用sys.stdout.write

例如:

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#!/usr/bin/env python

# -*- coding=utf-8 -*-

#Using GPL v2

#Author: ihipop@gmail.com

##2010-10-27 22:07

"""

Usage:

Just A Template

"""

from __future__ import division

import sys,time

j = '#'

if __name__ == '__main__':

for i in range(1,61):

j += '#'

sys.stdout.write(str(int((i/60)*100))+'% ||'+j+'->'+"\r")

sys.stdout.flush()

time.sleep(0.5)

print

第二种思路是用转义符\b

转义符\b是退格键,也就是说把输出的光标往回退格子,这样就可以不用+=了,例如:

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#!/usr/bin/env python

# -*- coding=utf-8 -*-

#Using GPL v2

#Author: ihipop@gmail.com

#2010-10-27 22:07

"""

Usage:

Just A Template

"""

from __future__ import division

import sys,time

if __name__ == '__main__':

for i in range(1,61):

sys.stdout.write('#'+'->'+"\b\b")

sys.stdout.flush()

time.sleep(0.5)

print

光标回退2格,写个#再回退,再写,达到增长的目的了

不过写这么多似乎是废话,在耳边常常听到一句话:那就是不要重复造轮子。实际上python有丰富发lib帮你实现这个东西,你完全可以把心思放在逻辑开发上而不用注意这些小细节

下面要介绍的就是这个类“progressbar”,使用easy_install可以方便的安装这个类库,其实就一个文件,拿过来放到文件同一个目录下面也直接可以import过来

如下图所示:

下面就是基本使用举例:

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

#!/usr/bin/env python

# -*- coding=utf-8 -*-

#Using GPL v2

#Author: ihipop@gmail.com

#2010-10-27 22:53

"""

Usage:

Just A Template

"""

from __future__ import division

import sys,time

from progressbar import *

total = 1000

#基本用法

progress = ProgressBar()

for i in progress(range(total)):

time.sleep(0.01)

pbar = ProgressBar().start()

for i in range(1,1000):

pbar.update(int((i/(total-1))*100))

time.sleep(0.01)

pbar.finish()

#高级用法

widgets = ['Progress: ', Percentage(), ' ', Bar(marker=RotatingMarker('>-=')),

' ', ETA(), ' ', FileTransferSpeed()]

pbar = ProgressBar(widgets=widgets, maxval=10000000).start()

for i in range(1000000):

# do something

pbar.update(10*i+1)

time.sleep(0.0001)

pbar.finish()

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

# coding:utf-8

import sys

import time

from progressbar import AnimatedMarker, Bar, BouncingBar, Counter, ETA, \

FileTransferSpeed, FormatLabel, Percentage, \

ProgressBar, ReverseBar, RotatingMarker, \

SimpleProgress, Timer

examples = []

def example(fn):

try:

name = 'Example %d' % int(fn.__name__[7:])

except:

name = fn.__name__

def wrapped():

try:

sys.stdout.write('Running: %s\n' % name)

fn()

sys.stdout.write('\n')

except KeyboardInterrupt:

sys.stdout.write('\nSkipping example.\n\n')

examples.append(wrapped)

return wrapped

@example

def example0():

pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=300).start()

for i in range(300):

time.sleep(0.01)

pbar.update(i + 1)

pbar.finish()

@example

def example1():

widgets = ['Test: ', Percentage(), ' ', Bar(marker=RotatingMarker()),

' ', ETA(), ' ', FileTransferSpeed()]

pbar = ProgressBar(widgets=widgets, maxval=10000000).start()

for i in range(1000000):

# do something

pbar.update(10 * i + 1)

pbar.finish()

@example

def example2():

class CrazyFileTransferSpeed(FileTransferSpeed):

"""It's bigger between 45 and 80 percent."""

def update(self, pbar):

if 45 < pbar.percentage() < 80:

return 'Bigger Now ' + FileTransferSpeed.update(self, pbar)

else:

return FileTransferSpeed.update(self, pbar)

widgets = [CrazyFileTransferSpeed(), ' <<<', Bar(), '>>> ',

Percentage(), ' ', ETA()]

pbar = ProgressBar(widgets=widgets, maxval=10000000)

# maybe do something

pbar.start()

for i in range(2000000):

# do something

pbar.update(5 * i + 1)

pbar.finish()

@example

def example3():

widgets = [Bar('>'), ' ', ETA(), ' ', ReverseBar('<')]

pbar = ProgressBar(widgets=widgets, maxval=10000000).start()

for i in range(1000000):

# do something

pbar.update(10 * i + 1)

pbar.finish()

@example

def example4():

widgets = ['Test: ', Percentage(), ' ',

Bar(marker='0', left='[', right=']'),

' ', ETA(), ' ', FileTransferSpeed()]

pbar = ProgressBar(widgets=widgets, maxval=500)

pbar.start()

for i in range(100, 500 + 1, 50):

time.sleep(0.2)

pbar.update(i)

pbar.finish()

@example

def example5():

pbar = ProgressBar(widgets=[SimpleProgress()], maxval=17).start()

for i in range(17):

time.sleep(0.2)

pbar.update(i + 1)

pbar.finish()

@example

def example6():

pbar = ProgressBar().start()

for i in range(100):

time.sleep(0.01)

pbar.update(i + 1)

pbar.finish()

@example

def example7():

pbar = ProgressBar() # Progressbar can guess maxval automatically.

for i in pbar(range(80)):

time.sleep(0.01)

@example

def example8():

pbar = ProgressBar(maxval=80) # Progressbar can't guess maxval.

for i in pbar((i for i in range(80))):

time.sleep(0.01)

@example

def example9():

pbar = ProgressBar(widgets=['Working: ', AnimatedMarker()])

for i in pbar((i for i in range(50))):

time.sleep(.08)

@example

def example10():

widgets = ['Processed: ', Counter(), ' lines (', Timer(), ')']

pbar = ProgressBar(widgets=widgets)

for i in pbar((i for i in range(150))):

time.sleep(0.1)

@example

def example11():

widgets = [FormatLabel('Processed: %(value)d lines (in: %(elapsed)s)')]

pbar = ProgressBar(widgets=widgets)

for i in pbar((i for i in range(150))):

time.sleep(0.1)

@example

def example12():

widgets = ['Balloon: ', AnimatedMarker(markers='.oO@* ')]

pbar = ProgressBar(widgets=widgets)

for i in pbar((i for i in range(24))):

time.sleep(0.3)

@example

def example13():

# You may need python 3.x to see this correctly

try:

widgets = ['Arrows: ', AnimatedMarker(markers='←↖↑↗→↘↓↙')]

pbar = ProgressBar(widgets=widgets)

for i in pbar((i for i in range(24))):

time.sleep(0.3)

except UnicodeError:

sys.stdout.write('Unicode error: skipping example')

@example

def example14():

# You may need python 3.x to see this correctly

try:

widgets = ['Arrows: ', AnimatedMarker(markers='◢◣◤◥')]

pbar = ProgressBar(widgets=widgets)

for i in pbar((i for i in range(24))):

time.sleep(0.3)

except UnicodeError:

sys.stdout.write('Unicode error: skipping example')

@example

def example15():

# You may need python 3.x to see this correctly

try:

widgets = ['Wheels: ', AnimatedMarker(markers='◐◓◑◒')]

pbar = ProgressBar(widgets=widgets)

for i in pbar((i for i in range(24))):

time.sleep(0.3)

except UnicodeError:

sys.stdout.write('Unicode error: skipping example')

@example

def example16():

widgets = [FormatLabel('Bouncer: value %(value)d - '), BouncingBar()]

pbar = ProgressBar(widgets=widgets)

for i in pbar((i for i in range(180))):

time.sleep(0.05)

@example

def example17():

widgets = [FormatLabel('Animated Bouncer: value %(value)d - '),

BouncingBar(marker=RotatingMarker())]

pbar = ProgressBar(widgets=widgets)

for i in pbar((i for i in range(180))):

time.sleep(0.05)

@example

def example18():

widgets = [Percentage(),

' ', Bar(),

' ', ETA(),

' ', AdaptiveETA()]

pbar = ProgressBar(widgets=widgets, maxval=500)

pbar.start()

for i in range(500):

time.sleep(0.01 + (i < 100) * 0.01 + (i > 400) * 0.9)

pbar.update(i + 1)

pbar.finish()

@example

def example19():

pbar = ProgressBar()

for i in pbar([]):

pass

pbar.finish()

try:

for example in examples:

example()

except KeyboardInterrupt:

sys.stdout('\nQuitting examples.\n')

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值