flask ValueError:对已关闭文件的I / O操作

Azam

我有一个代码,用于从网页抓取,并将抓取的数据保存在html文件中,并将其显示为其他页面。下面是代码

from flask import Flask, render_template,request from bs4 import
BeautifulSoup import urllib.request import sys,os app =
Flask(__name__) @app.route('/') def index():
    return render_template ('index.html')

@app.route('/result',methods = ['POST']) def result():    if
request.method == 'POST':
      result = request.form.get("search")
      link = "https://xyz.comindex?search="
      url = (link+result)
      print(url)
      try:
         page = urllib.request.urlopen(url)
         soup = BeautifulSoup(page, 'html.parser')
         test = soup.findAll('div', attrs={"class": "search-inner-wrapper"})
         sys.stdout = open("tests.html", "w")
         print(test)
         sys.stdout.close()
         return render_template("SearchResults.html", test=test)
      except:
         print("An error occured.")
      return render_template("test.html", test=test)


if __name__ == '__main__':
    app.run(use_reloader = True, debug = True)

我的问题是,这段代码可以正常运行,但只运行一次,当我重新加载索引页面并执行搜索查询时,我得到了

ValueError:对关闭的文件进行I / O操作。

我无法解决此问题,因为我每次都必须使用单个文件,并且不希望结果附加现有代码。

布伦达·巴特勒

您正在将sys.stdout重新定义为您打开的文件的文件句柄。使用其他名称,不要覆盖sys.stdout。并且不要关闭sys.stdout。可以关闭您创建的文件句柄。

打开并读取文件,打开并写入文件的示例:

bjb@blueeyes:~$ cat /tmp/infile.html
<html>
<head>
</head>
<body>
<div class="search-inner-wrapper">fleeble flobble</div>
</body>
</html>
bjb@blueeyes:~$ cat /tmp/file2.py
#!/usr/bin/env python3


with open('/tmp/infile.html', 'r') as infile:
    page = infile.readlines()

with open('/tmp/outfile.html', 'w') as ofd:
    ofd.write(''.join(page))


bjb@blueeyes:~$ /tmp/file2.py
bjb@blueeyes:~$ cat /tmp/outfile.html
<html>
<head>
</head>
<body>
<div class="search-inner-wrapper">fleeble flobble</div>
</body>
</html>

/tmp/file2.py的第一行只是说这是一个python脚本。

接下来的两行打开一个名为/tmp/infile.html的文件以进行读取,并声明一个变量“ infile”作为读取文件描述符。然后,/ tmp / infile.html中的所有行都被读入字符串列表。

当我们离开该“ with”块时,该文件将为我们关闭。

然后在接下来的两行中,打开/tmp/outfile.html进行写入,并使用变量ofd(“输出文件描述符”)保存文件描述符。我们使用ofd将列表“页面”中的一系列行写入该文件。一旦我们离开第二个“ with”块,就为我们关闭了输出文件。然后程序退出...我的最后一条命令转储了/tmp/outfile.html的内容,您可以看到它与infile.html相同。

如果要打开和关闭文件而不使用带块文件,则可以:

infile = open('/tmp/infile.html', 'r')
page = infile.readlines()
infile.close()

ofd = open('/tmp/outfile.html', 'w')
ofd.write(''.join(page))
ofd.close()

希望可以在烧瓶脚本中工作...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python:ValueError:对已关闭文件的I / O操作

ValueError:已关闭文件的 I/O 操作。-- For 循环

ValueError:对关闭的文件进行I / O操作

CSV阅读器对象获取ValueError:对已关闭文件的I / O操作?

多线程使我收到“ ValueError:对已关闭文件的I / O操作”错误。为什么?

下载数据集时出现此错误:ValueError:对已关闭文件的I / O操作

ValueError:上下文管理器范围内对已关闭文件的I / O操作

使用pandas.read_csv()与csv.reader()冲突-ValueError:对已关闭文件的I / O操作

Python 错误:Python ValueError:已关闭文件上的 I/O 操作

ValueError:对关闭的文件进行I / O操作(不应关闭文件)

将文件实例作为celery任务的参数传递会引发“ ValueError:对已关闭文件的I / O操作”

ValueError:打开文件后对关闭的文件进行I / O操作

凯拉斯。ValueError:在关闭的文件上的I / O操作

openpyxl:ValueError:在关闭的文件上的I / O操作

python:获取ValueError:关闭文件上的I/O操作

值错误:对已关闭文件的I / O操作

Python ValueError:对关闭的文件进行I / O操作,文件保存且无数据

ValueError:对关闭的文件进行I / O操作(使用两个txt文件)

带上载文件的烧瓶重定向-已关闭文件的I / O操作

ValueError:关闭文件上的 I/O 操作(本地机器正常,但不是 Google Colab)

Python ValueError:对关闭的文件进行I / O操作。示例教程不起作用

ValueError:针对dblp数据集的关闭文件错误的I / O操作

为什么我的文件关闭并导致第 51 行出现“已关闭文件上的 I/O 操作”错误?

子进程命令的实时输出状态错误:对已关闭文件Python的I / O操作

我的输出显示值错误:已关闭文件上的 I/O 操作。Python

关闭文件错误的I / O操作

ValueError:即使在为open()提供第二个arg之后,仍对关闭的文件进行I / O操作

对关闭文件的I / O操作:Django Imagekit&Pillow

使用input()对关闭的文件进行I / O操作