FileNotFoundError: [Errno 2] Нет такого файла или каталога: путь молоточка

Так что этот код работал раньше, теперь я получаю эту ошибку - пожалуйста, помогите :(

mallet_path = 'C:/mallet/mallet-2.0.8/bin/mallet.bat'

ldamallet_test = gensim.models.wrappers.LdaMallet(mallet_path, corpus=bow_corpus_test, num_topics=20, id2word=dictionary_test)

Сообщение об ошибке

Этот файл mallet.bat, на который я ссылаюсь, больше не открывается


person Sara    schedule 02.04.2019    source источник


Ответы (1)


Это связано с тем, что ваш домашний каталог для Mallet не настроен должным образом. Несмотря на то, что у вас есть путь к двоичному файлу, заданному как переменная, вы все равно должны определить переменную среды, которая содержит источник, где находится Mallet:

import os
from gensim.models.wrappers import LdaMallet

os.environ['MALLET_HOME'] = 'C:\\mallet\\mallet-2.0.8'

mallet_path = 'C:\\mallet\\mallet-2.0.8\\bin\\mallet'
ldamallet_test = gensim.models.wrappers.LdaMallet(mallet_path, corpus=bow_corpus_test, num_topics=20, id2word=dictionary_test)

Обратите внимание, что вам не нужно добавлять расширение .bat, так как Windows должна выполнить это изначально, поскольку она знает, что это пакетный файл. И последнее замечание: вы должны использовать двойную обратную косую черту (\\) для разделителя пути в Windows. Невыполнение этого требования в зависимости от используемой версии Windows может привести к неожиданному поведению. Если вы хотите избежать головной боли, попробуйте использовать os.path.join который предоставит вам правильный разделитель пути независимо от ОС:

mallet_path = os.path.join('C:', 'mallet', 'mallet-2.0.8', 'bin', 'mallet')
person rayryeng    schedule 02.04.2019
comment
Расширение файла .bat можно предположить при выполнении через оболочку CMD (например, используя subprocess.Popen с shell=True), поскольку оно находится в переменной среды PATHEXT. Иначе нельзя предположить. Это поведение оболочки, а не общее для Windows. CreateProcessW поддерживает выполнение пакетных сценариев напрямую через оболочку ComSpec, но необходимо включить расширение .bat или .cmd. В противном случае он принимает только .exe в качестве расширения файла и пытается выполнить любой найденный файл как двоичный образ. - person Eryk Sun; 03.04.2019