Python - 读取目录中的所有文件,然后根据某些函数返回最大值
Python - reading all files in a directory and then returning the max value based on some function
我正在尝试创建一个函数,该函数可以打开并读取目录中的每个文件,然后 return 根据某个函数选择具有最高值的文件。在这种情况下,我使用 Textblob 库中称为情绪分析的函数来评估每个文本文件的乐观程度或消极程度。所以最终目标是在目录中找到最乐观的.txt文件。
from textblob import TextBlob
import sys
import glob
def optimistic():
path = 'Download/textfiles/*.txt'
files = glob.glob(path)
max_sent = 0
for name in files:
with open(name) as f:
sys.stdout.write(f.read())
if TextBlob(f).sentiment > max_sent:
max_sent = TextBlob(f).sentiment
return name
我有点不确定我是否正确读取了目录中的每个文件,以及我是否正确地将每个文件与所有其他文件进行比较以 return 最大值。如有任何帮助,我们将不胜感激。
除了 return
值外,它看起来不错。在您的代码中,它将始终 return files
中的名字,而不是遍历它们。也许,你想试试这个。我只是对你的代码做了一个最小的改动,每次我找到一个新的最大值时我都会分配一个 max_name
变量,然后 return 这个值。
from textblob import TextBlob
import sys
import glob
def optimistic():
path = 'Download/textfiles/*.txt'
files = glob.glob(path)
max_sent = 0
max_name = ''
for name in files:
with open(name, 'r') as f:
text = f.read()
sentiment = TextBlob(text).sentiment
if sentiment > max_sent:
max_sent = sentiment
max_name = name
return max_name
请注意,我也以只读模式打开文件,因为您不写入它们:open(name, 'r')
。此外,由于 TextBlob 需要一个字符串作为输入,我首先将您的文件转换为一个字符串。
我正在尝试创建一个函数,该函数可以打开并读取目录中的每个文件,然后 return 根据某个函数选择具有最高值的文件。在这种情况下,我使用 Textblob 库中称为情绪分析的函数来评估每个文本文件的乐观程度或消极程度。所以最终目标是在目录中找到最乐观的.txt文件。
from textblob import TextBlob
import sys
import glob
def optimistic():
path = 'Download/textfiles/*.txt'
files = glob.glob(path)
max_sent = 0
for name in files:
with open(name) as f:
sys.stdout.write(f.read())
if TextBlob(f).sentiment > max_sent:
max_sent = TextBlob(f).sentiment
return name
我有点不确定我是否正确读取了目录中的每个文件,以及我是否正确地将每个文件与所有其他文件进行比较以 return 最大值。如有任何帮助,我们将不胜感激。
除了 return
值外,它看起来不错。在您的代码中,它将始终 return files
中的名字,而不是遍历它们。也许,你想试试这个。我只是对你的代码做了一个最小的改动,每次我找到一个新的最大值时我都会分配一个 max_name
变量,然后 return 这个值。
from textblob import TextBlob
import sys
import glob
def optimistic():
path = 'Download/textfiles/*.txt'
files = glob.glob(path)
max_sent = 0
max_name = ''
for name in files:
with open(name, 'r') as f:
text = f.read()
sentiment = TextBlob(text).sentiment
if sentiment > max_sent:
max_sent = sentiment
max_name = name
return max_name
请注意,我也以只读模式打开文件,因为您不写入它们:open(name, 'r')
。此外,由于 TextBlob 需要一个字符串作为输入,我首先将您的文件转换为一个字符串。