Запустите скрипт Python для всех файлов в каталоге - PullRequest
0 голосов
/ 22 ноября 2018

Мои навыки программирования очень (х10) ограничены.Но у меня есть этот маленький скрипт на Python:

#load data
files = '/Users/xxx/Desktop/Test_SP/a.txt'
file = open(files, 'rt')
text = file.read()
file.close()
# split into words
from nltk.tokenize import word_tokenize
tokens = word_tokenize(text)
# stemming of words
from nltk.stem.porter import PorterStemmer
porter = PorterStemmer()
stemmed = [porter.stem(word) for word in tokens]
print(stemmed[:20])

Может кто-нибудь сказать, пожалуйста, как запустить этот скрипт для ВСЕ файлы в этом каталоге (/Users/xxx/Desktop/Test_SP), а не только для 1Файл за один раз (a.txt)

(я уже знаю о glob, os.walk и т. Д., Но мне не удалось заставить его работать. Каждая помощь очень ценится.)

1 Ответ

0 голосов
/ 22 ноября 2018

Вся ваша упомянутая функция должна работать для итерации всех файлов внутри папки.Кстати, в чем ваша ошибка при попытке запуска с этим методом (glob, os.walk и т. д.).Вот мое решение с listdir:

import os
files_path = '/Users/xxx/Desktop/Test_SP/'
for filename in os.listdir(files_path):
    # only care the txt files
    if filename.endswith(".txt"):
        #load data
        file = open("{}/{}".format(files_path,filename))
        text = file.read()
        file.close()
        # split into words
        from nltk.tokenize import word_tokenize
        tokens = word_tokenize(text)
        # stemming of words
        from nltk.stem.porter import PorterStemmer
        porter = PorterStemmer()
        stemmed = [porter.stem(word) for word in tokens]
        # write on the same file with input
        with open("{}/{}".format(files_path,filename), 'w') as fout:
            fout.write(stemmed[:20])
...