#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’) в качестве файла, он просто закрывает файл после закрытия вашей программы.