python — открытие файлов и другие методы для файлов

#python #file #methods

Вопрос:

я пытаюсь закодировать функцию length_n(file_name, n) , в которой она возвращает список слов внутри file_name (текстовый файл), длина которого равна n. file_name будет имя файла, содержащего список слов. По какой-то причине, когда я проверяю свои коды, open операция не позволяет успешно открыть мой текстовый файл. Кто-нибудь знает, почему? Кроме того, правильно ли я использовал методы .read и .split правильно ли? большое вам спасибо!

 def length_n(file_name,n):
    #the list of words will be called 
    l1=[]
    #the list of words with the length of n will be called
    l2=[]
    file=open('file_name','r')
    #the individual lines are
    lines=file.read()
    #split the content into words
    l1=lines.split("")
    length=len(l1)
    for i in range (0,length):
        l=len(l1[i])
        if l==n:
            l2.append(l1[i])
            
    return l2
 

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

1. Что вы подразумеваете под «операция «открыть» не позволяет успешно открыть мой текстовый файл»? Вы получаете сообщение об ошибке? Если да, то в чем дело?

Ответ №1:

Ты не можешь этого сделать:

 file=open('file_name','r')
 

Python пытается найти файл с именем файла, но я почти уверен, что его не существует.

Вот решение:

 file=open(f'{file_name}.txt','r') # you can remove '.txt' if you don't need it

#OR

file=open(file_name,'r') # or simply just this
 

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

1. Было бы точнее начать свой вопрос с объяснения того, что open('file_name', 'r') не делает то, что, по мнению ОП, делает, или имеет опечатку, которую они упустили. Неверно говорить, что они вообще не могут этого сделать.

2. Ладно, я думаю, мне не следовало говорить «Вы не можете этого сделать», но я написал объяснение ниже первого кода.

3. привет, большое вам спасибо за ваш ответ. Я попробовал файл=открыть(‘{имя_файла}.txt’, ‘r,’) и проверил его с помощью length_n(круто,4) (У меня есть файл с именем cool.txt в моей папке) и выдает ошибку «нет такого файла или каталога: ‘{имя_файла}.txt'». Похоже, что он принимает имя файла в качестве имени файла хммм

4. @needhelpwithmathandcs, Не забывай о малом f .

5. Я также попробовал файл=открыть(имя_файла, ‘r’), и там написано: «ожидаемый str, байт или ОС. Объект, похожий на путь, а не _io. Упаковщик текста»

Ответ №2:

Я изменил ваш код вот так,

 def length_n(file_name,n):
   #the list of words will be called 
    l1=[]
    #the list of words with the length of n will be called
    l2=[]
    with open(f'{file_name}','r') as file: # We can't use file = because it doesn't read it is a parameter of length_n. Then we should use formatter or file = open(file_name,'r').
          lines=file.read()
          l1=lines.split("")
          length=len(l1)
          for i in range (0,length):
              l=len(l1[i])
              if l==n:
                 l2.append(l1[i])
        
     return l2
 

Когда мы используем с open(f’имя_файла’,’ r’) в качестве файла, он просто закрывает файл после закрытия вашей программы.