[英]How to read and overwrite all *.txt files in a folder with python and bs4?
我有一个包含数千个文件的文件夹。 我正在尝试使用 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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.