FileNotFoundError: [Errno 2] Нет такого файла или каталога, несмотря на то, что файл определенно существует - PullRequest
0 голосов
/ 28 февраля 2019

Я работал над этим фрагментом кода, пытаясь открыть несколько файлов в каталоге.Каталог содержит 10 текстовых файлов.Я хочу открыть каждый из файлов, сделать что-то с ним (а именно удалить стоп-слова) и вывести преобразованный текст в новый файл в другой каталог.Однако, у меня есть эта проблема:

FileNotFoundError: [Errno 2] Нет такого файла или каталога: '1980'

Файл определенно существует в каталоге, и у меня естьдавал абсолютный путь.Я просмотрел текущий рабочий каталог перед открытием файла, и он не возвращает абсолютный путь, который я ему дал, а каталог, в котором расположен этот проект.Будем весьма благодарны за любую помощь в получении кода для открытия необходимых файлов и записи результата в выходной файл!Вот мой код:

path = 'C:/Users/User/Desktop/mini_mouse'
output = 'C:/Users/User/Desktop/filter_mini_mouse/mouse'
for root, dir, files in os.walk(path):
    for file in files:
        print(os.getcwd())
        with open(file, 'r') as f, open('NLTK-stop-word-list', 'r') as f2:
            x = ''
            mouse_file = f.read().split()  # reads file and splits it into a list
            stopwords = f2.read().split()
            x = (' '.join(i for i in mouse_file if i.lower() not in (x.lower() for x in stopwords)))
            with open('out', 'w') as output_file:
                output_file.write((' '.join(i for i in mouse_file if i.lower() not in (x.lower() for x in stopwords))))

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Проблема с вашим кодом в том, что '1980' - это не полный путь к файлу, а просто string.Вы должны добавить оставшуюся часть пути, как показано ниже, используя, например, path.join:

with open(os.path.join(path, file), 'r') as f, open(os.path.join(path, 'NLTK-stop-word-list'), 'r') as f2:

Тогда Python сможет найти файл и открыть его в режиме чтения.

0 голосов
/ 28 февраля 2019

Вы на Windows?Всякий раз, когда я делаю абсолютные пути в Windows, мне нужно использовать обратную косую черту () вместо прямой косой черты (/).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...