Попробуйте:
#Read the data from input file.
with open("names.txt","r") as f:
input_list = f.read().splitlines() # Will look like : lines = ['Hans', 'Anna', 'Vladimir', 'Michael', 'Ed', 'Susan', 'Janice', 'Jo']
def write_len(input_list):
with open("name_length.txt","w") as w:
for item in input_list:
f.write("{0}\n".format(len(item)))
return 1
print(size(input_list))
Я не понял, зачем вам сначала нужно было создать строку с join
, а затем разбить ее. Выше приведен пример того, как вы можете напрямую записать длину строки в файл с каждым элементом в новой строке.
Также я хотел бы добавить, что вы открыли файл для чтения и назвали указатель файла как f
. В следующей строке вы используете ту же переменную f
для хранения значения read"()
. Это то, что вы должны избегать. Контекст переменной f
изменяется и может создавать проблемы в некоторых сценариях ios.
Вот как вы можете использовать списочное понимание и join
для достижения sh того же:
#Read the data from input file.
with open("names.txt","r") as f:
input_list = f.read().splitlines() # Will look like : lines = ['Hans', 'Anna', 'Vladimir', 'Michael', 'Ed', 'Susan', 'Janice', 'Jo']
def write_len(input_list):
final_str = "\n".join([str(len(item)) for item in input_list])
with open("name_length.txt","w") as w:
w.write(final_str)
return 1
print(size(input_list))
ВЫХОД:
4
4
8
7
2
5
6
2
Приведенный выше вывод записывается в файл.