如何在此代码中实现'tempfile'模块

时间:2014-02-18 18:06:00

标签: python urllib temporary-files

这是我设计的一个小窗口小部件,旨在“浏览”同时绕过代理设置。我在Code Review上被告知这将是有益的,但我很难将其纳入我的程序的当前逻辑。这是代码:

import urllib.request
import webbrowser
import os
import tempfile

location = os.path.dirname(os.path.abspath(__file__))

proxy_handler = urllib.request.ProxyHandler(proxies=None)
opener = urllib.request.build_opener(proxy_handler)


def navigate(query):
    response = opener.open(query)
    html = response.read()
    return html

def parse(data):
    start = str(data)[2:-1]
    lines = start.split('\\n')
    return lines

while True:
    url = input("Path: ")
    raw_data = navigate(url)

    content = parse(raw_data)
    with open('cache.html', 'w') as f:
         f.writelines(content)

    webbrowser.open_new_tab(os.path.join(location, 'cache.html'))

希望之前使用过这些模块的人可以帮助我。我想使用tempfile的原因是我的程序获得原始html,解析它并将其存储在 文件 中。每次输入新输入时都会覆盖此文件,理想情况下,当程序停止运行时,该文件将被删除。此外,程序初始化时不必存在该文件,因此从该视图看起来也是合乎逻辑的。

1 个答案:

答案 0 :(得分:1)

由于您要将文件名称传递给webbrowser.open_new_tab(),因此您应使用NamedTemporaryFile

cache = tempfile.NamedTemporaryFile()
...

cache.seek(0)
cache.writelines(bytes(line, 'UTF-8') for line in content)

cache.seek(0)
webbrowser.open_new_tab('file://' + cache.name)