import re
import os
def scan_folder(parent):
# iterate over all the files in directory 'parent'
for file_name in os.listdir(parent):
if file_name.endswith(".txt"):
mensaje = file_name.read()
mensaje = mensaje.replace("n","")
# Number of CVE from "DiarioOficial"
regex = r"s*CVEs+([^|]*)"
matches = re.search(regex, mensaje)
if matches:
print (matches.group(1).strip())
scan_folder("/Users/.../DiarioOficial")
我有以前的代码来加载并打开位于该路径中的所有.txt。我想执行Regex的功能,为这个路由中的所有txt文件实现。
它不起作用,它给了我:
Traceback (most recent call last):
File "/Users/anna/PycharmProjects/extractData/Principal.py", line 80, in <module>
scan_folder("/Users/anna/PycharmProjects/extractData/DiarioOficial")
File "/Users/anna/PycharmProjects/extractData/Principal.py", line 16, in scan_folder
mensaje = file_name.read()
AttributeError: 'str' object has no attribute 'read'
我想浏览所有的文件,并在每个文件中进行相同的操作。
您应该替换:
mensaje = file_name.read()
带有:
mensaje = open(file_name).read()
您缺少一个open语句。file_name是一个字符串对象,它只是文件的名称。要先打开文件,必须调用open。最方便的是使用像这样打开的,因为它节省了您手动关闭文件的时间:
with open(file_name) as f:
mensaja = f.read()