相关疑难解决方法(0)

sys.stdout.write和print之间的区别?

有哪些sys.stdout.write()情况比较好print

(示例:更好的性能;更有意义的代码)

python printing stdout

351
推荐指数
9
解决办法
54万
查看次数

Python进度条

当我的脚本执行可能需要一些时间的任务时,如何使用进度条?

例如,一个需要一些时间才能完成并True在完成时返回的函数.如何在执行功能期间显示进度条?

请注意,我需要实时,所以我无法弄清楚该怎么做.我需要thread这个吗?我不知道.

现在我正在执行函数时不打印任何内容,但是进度条会很好.此外,我更感兴趣的是从代码的角度来看如何做到这一点.

python

257
推荐指数
17
解决办法
35万
查看次数

如何在Python中编写下载进度指示器?

我写一个小程序下载文件通过HTTP(如,例如,描述在这里).

我还想包含一个小的下载进度指示器,显示下载进度的百分比.

这是我想出的:

    sys.stdout.write(rem_file + "...")    
    urllib.urlretrieve(rem_file, loc_file, reporthook=dlProgress)

    def dlProgress(count, blockSize, totalSize):
      percent = int(count*blockSize*100/totalSize)
      sys.stdout.write("%2d%%" % percent)
      sys.stdout.write("\b\b\b")
      sys.stdout.flush()

输出:MyFileName ... 9%

还有其他想法或建议吗?

有点烦人的是在百分比的第一位数字中终端闪烁的光标.有办法防止这种情况吗?有没有办法隐藏光标?

编辑:

这里有一个更好的替代方法,在dlProgress和'\ r'代码中使用全局变量作为文件名:

    global rem_file # global variable to be used in dlProgress

    urllib.urlretrieve(rem_file, loc_file, reporthook=dlProgress)

    def dlProgress(count, blockSize, totalSize):
      percent = int(count*blockSize*100/totalSize)
      sys.stdout.write("\r" + rem_file + "...%d%%" % percent)
      sys.stdout.flush()

输出:MyFileName ... 9%

并且光标显示在行的END处.好多了.

python http

54
推荐指数
3
解决办法
3万
查看次数

如何在urllib.urlretrieve中捕获404错误

背景:我正在使用urllib.urlretrieve,而不是urllib*模块中的任何其他功能,因为钩子功能支持(见reporthook下文)..用于显示文本进度条.这是Python> = 2.6.

>>> urllib.urlretrieve(url[, filename[, reporthook[, data]]])
Run Code Online (Sandbox Code Playgroud)

但是,它urlretrieve是如此愚蠢,以至于它无法检测HTTP请求的状态(例如:它是404还是200?).

>>> fn, h = urllib.urlretrieve('http://google.com/foo/bar')
>>> h.items() 
[('date', 'Thu, 20 Aug 2009 20:07:40 GMT'),
 ('expires', '-1'),
 ('content-type', 'text/html; charset=ISO-8859-1'),
 ('server', 'gws'),
 ('cache-control', 'private, max-age=0')]
>>> h.status
''
>>>
Run Code Online (Sandbox Code Playgroud)

下载具有类似钩子支持的远程HTTP文件(显示进度条)和一个不错的HTTP错误处理的最着名的方法是什么?

python url http urllib

28
推荐指数
2
解决办法
2万
查看次数

如何使用请求测量下载速度和进度?

requests用来下载文件,但是对于大文件我需要每次检查磁盘上文件的大小,因为我无法显示百分比的进度,我也想知道下载速度.我怎么去做呢?这是我的代码:

import requests
import sys
import time
import os

def downloadFile(url, directory) :
  localFilename = url.split('/')[-1]
  r = requests.get(url, stream=True)

  start = time.clock()
  f = open(directory + '/' + localFilename, 'wb')
  for chunk in r.iter_content(chunk_size = 512 * 1024) :
        if chunk :
              f.write(chunk)
              f.flush()
              os.fsync(f.fileno())
  f.close()
  return (time.clock() - start)

def main() :
  if len(sys.argv) > 1 :
        url = sys.argv[1]
  else :
        url = raw_input("Enter the URL : ")
  directory = raw_input("Where would you want to …
Run Code Online (Sandbox Code Playgroud)

python progress download-speed python-2.7 python-requests

10
推荐指数
2
解决办法
2万
查看次数

Python请求超时无法正常工作

我正在使用以下代码来检查平均响应时间,因为我注意到它非常慢:

            t1 = time.time()
            response = requests.get(url, timeout=10, headers=headers)
            t2 = time.time()
            reqtimes += t2 - t1
            reqamount += 1
            print("Average response time:" + str(reqtimes/reqamount))
Run Code Online (Sandbox Code Playgroud)

当我在连接到大约 1000 个不同的站点后打印平均响应时间时,它告诉我平均响应时间为 70 秒。为什么?我的超时设置为 10 !

python request python-3.x python-requests

5
推荐指数
1
解决办法
5325
查看次数