如何解决如何使用python和bs4读取和覆盖文件夹中的所有* .txt文件?
我有一个包含数千个文件的文件夹。我正在尝试使用beautifulsoup4解析其中的XML标记。
我能够分别为每个文件执行此操作,但是无法使用for循环使脚本工作。
到目前为止,这是我的代码:
import bs4 as bs
import glob
path = r"~/Desktop/pythontest/*.txt"
files = glob.glob(path)
# ------------------------READ AND PARSE TEXT-----------------------------------------
for f in files:
# open file in read mode
source = open(f,"rt")
# parse xml as soup
soup = bs.BeautifulSoup(source,"lxml")
soupText = soup.get_text()
text = soupText.replace(r"\n"," ")
# close file
source.close()
# --------------------------OVERWRITE FILE---------------------------------------------
for f in files:
# open file in write mode
source = open(f,"wt")
# overwrite the file with the soup
source.write((text))
# # close file
source.close()
print(text)
当我运行它时,控制台会为我提供:
Traceback (most recent call last):
File "./camltest.py",line 34,in <module>
print(text)
NameError: name 'text' is not defined
我怀疑这是一个示波器问题,但无法解决。有什么建议?谢谢
解决方法
请注意,text
是在您的第一个for循环中定义的。
如果files
是一个空列表,将永远不会定义text
。
您可以简单地在同一循环中读取然后写入文件。
for f in files:
source = open(f,"w+")
soup = bs.BeautifulSoup(source,"lxml")
soupText = soup.get_text()
text = soupText.replace(r"\n"," ")
source.write(text)
source.close()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。