Файлообменник: [Ошибка 2] Нет такого файла или каталога: ‘-f’

#python #file-io #nltk #tokenize

Вопрос:

Пожалуйста, простите мой невежественный вопрос. Я нахожусь на начальной стадии изучения Python. Я хочу преобразовать Before_text в After_text.

 <Before_text>
Today, I got up early, so I’m absolutely exhausted. I had breakfast: two slices n
of cold toast and a disgusting coffee, then I left the house at 8 o’clock still n
feeling half asleep. Honestly, London’s killing me!
 
 <After_text>
Today, I got up early, so I’m absolutely exhausted. 
I had breakfast: two slices of cold toast and a disgusting coffee, then I left the house at 8 o’clock still feeling half asleep. 
Honestly, London’s killing me!
 

На самом деле, независимо от кода, мне нужно только получить этот результат (After_text).
Я использовал этот код:

 import sys, fileinput
from nltk.tokenize import sent_tokenize

if __name__ == "__main__":
    buf = []

    for line in fileinput.input():
        if line.strip() != "":
            buf  = [line.strip()]
            sentences = sent_tokenize(" ".join(buf))

            if len(sentences) > 1:
                buf = sentences[1:]

                sys.stdout.write(sentences[0]   'n')

    sys.stdout.write(" ".join(buf)   "n")
 

Возникает следующая ошибка:

 ---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-1-ef8b2fcb97ad> in <module>()
      5     buf = []
      6 
----> 7     for line in fileinput.input():
      8         if line.strip() != "":
      9             buf  = [line.strip()]

-------------------------1 frames--------------------------------------------------
/usr/lib/python3.7/fileinput.py in _readline(self)
    362                     self._file = self._openhook(self._filename, self._mode)
    363                 else:
--> 364                     self._file = open(self._filename, self._mode)
    365         self._readline = self._file.readline  # hide FileInput._readline
    366         return self._readline()

FileNotFoundError: [Errno 2] No such file or directory: '-f'
 

В чем причина этой ошибки? Где ошибка в этом коде?
И как и где я могу загрузить и сохранить текстовый файл?
Пожалуйста, научи меня~

Комментарии:

1. Что вы можете сделать, так это прочитать файл и повторить строки, используя цикл for

2. Похоже, что командная строка, которую вы используете для запуска этой программы, включает < -f в себя «принимать входные данные из файла с именем-f», но такого файла нет. Может быть, вы имели в виду что-то вроде < myfile.txt этого ?

Ответ №1:

Если вы хотите использовать fileinput.input (), вы должны указать имена входных файлов в качестве аргументов ( sys.argv ), простой пример, если у вас есть cat.py следующее

 import fileinput
for line in fileinput.input():
    print(line, end='')
 

и текстовые файлы file1.txt , file2.txt , file3.txt в том же каталоге, то использование:

 python cat.py file1.txt file2.txt file3.txt
 

Комментарии:

1. Мне действительно не нужен основной код выше. Все, что мне нужно, это это. 1. Загрузите текстовый файл. 2. Удалите все разрывы строк в конце строки и снова подключите их. 3. Новое предложение начинается с новой строки. 4. Сохраните переведенный текст.

Ответ №2:

Согласно документам, fileinput.input() это ярлык, который берет данные из командной строки и пытается открывать их по одному за раз, или, если ничего не указано, он использует stdin их в качестве входных данных.

Пожалуйста, покажите нам, как вы вызываете свой скрипт. Я подозреваю, что у вас -f там есть, что функция пытается открыть.