将json数据转换为.txt文件的快速方法 - python 2.7

时间:2014-01-29 16:48:41

标签: python json performance python-2.7

所以我将来自url的JSON数据转换为字符串,然后将其写入文本文件。这是我目前的Python脚本(我使用的是Python 2.7.6):

import json
import urllib
import time

startTime = time.time()

url = "http://someurl..."
success = False

while (True):
    try:
        txt = urllib.urlopen(url).read()
        print "        -> open URL time: %.3f" % (time.time() - startTime)
        secondTime = time.time()

        textFile = open('data.txt', 'w')
        textFile.write("JSON Data (")
        textFile.write(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
        textFile.write("):\n")
        textFile.write(txt)
        textFile.close()
        print "        -> write file time: %.3f" % (time.time() - secondTime)
        thirdTime = time.time()

        success = True
        break
    except ValueError as valueErr:
        print "Error:", err
    except IOError as ioError:
        print "Error: Internet connection issues."
        break

if (success):
    print "    -> data.txt created()."
    print "    -> Finished."
    print "        -> Total Elapsed Time = %.3f" % (time.time() - startTime), "seconds."
else:
    print "    -> Finished."

,输出如下(我在Windows命令提示符下运行,而不是Python提示符):

'getCryptsyData.py' executing...
        -> open URL time: 4.864
    -> data.txt created().
        -> write file time: 0.005
    -> Finished.
        -> Total Elapsed Time = 4.939 seconds.

我的问题是,有没有更快的方法呢?即使用不同的python脚本或其他脚本语言或在C?

编辑1:更新的代码并输出到我正在运行的当前脚本。

2 个答案:

答案 0 :(得分:1)

您正在从txt加载json。为什么不跳过它,只是将响应txt写入文件?

您的示例可以跳过json load / dump,并且基本上可以重写为:

txt = urllib.urlopen(url).read()
with open('data.txt', 'w') as f:
    f.write(txt)

一些风格提示:

  • 使用上下文管理器(“with”语句)写入文件。
  • 对于时序代码块,请查看timeit模块。
  • 关注pep8。你的camelCased var名字伤害了我的眼睛:)。

答案 1 :(得分:1)

由于大部分时间都花在等待外部服务器响应上,因此您可能无法通过更改代码获得任何收益。根据此代码的使用方式,您可以通过以下方式改善整体体验:

  • 如果可能再次请求相同的文件而没有更改,请在本地缓存它们。
  • 如果文件在其他服务器上可用,请找到离您更近的镜像。
  • 如果文件大小可预测,您可以使用另一个进程在一个时间间隔内本地复制它们。