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)

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

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
1 157
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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')

Расширение файла «.bat» можно использовать при выполнении через оболочку CMD (например, используя subprocess.Popen с shell=True), потому что оно находится в переменной среды PATHEXT. Иначе нельзя предположить. Это поведение оболочки, а не общее для Windows. CreateProcessW поддерживает выполнение пакетных сценариев напрямую через оболочку ComSpec, но необходимо включить расширение «.bat» или «.cmd». В противном случае он принимает только «.exe» в качестве расширения файла и пытается выполнить любой найденный файл как двоичный образ.

Eryk Sun 03.04.2019 01:41

Другие вопросы по теме