
Как найти номер строки с заданным вхождением в Python?
Предлагаю решить задачу на поиск номера строки с заданным вхождением. А для того, чтобы поиски продвигались активнее, представим, что перед нами находится огромный текстовый файл, в котором тысячи строк. И лишь одна из них содержит фразу «я здесь ни при чем». А номер этой строки — недостающая часть кода от сейфа с деньгами. Думаю, мы легко справимся с заданием при помощи Python! Только составим предварительно ТЗ.
Кстати, а что, если в файле несколько строк с искомой фразой, и нам нужно вывести номера всех этих строк? Этот вариант мы не оставим без внимания и обязательно рассмотрим в этой статье в задаче №2. А сейчас приступим к решению первой задачи!
Задача №1: Поиск номера первой строки с заданным вхождением
Техническое задание:
Цель: вывести на экран номер строки, в которой содержится фраза: «я здесь ни при чем». Если таких строк несколько, выводим номер первой строки.
Порядок выполнения:
1. Инициализировать файл, в котором будем осуществлять поиск, а также определить искомую фразу.
2. Открыть заданный файл и произвести построчное считывание текста.
3. При считывании каждую строку файла проверять на вхождение фразы: «я здесь ни при чем». Если фраза в строке найдена, остановить построчное считывание и вывести номер строки на экран.
4. В заключение (исключительно в тренировочных целях!), оформим написанный код в функцию и осуществим ее вызов.
Для тренировки мы возьмем короткий файл — в нем легче протестировать работу нашего кода. Файл под названием «cats_fault.txt» следующего вида:
Если в домике бардак, Это котик виноват - Не помыл посуду кот, Думал, что и так сойдет Не заправил кот кровать, Начал с книжками играть.. И белье не постирал, и обед он наш украл.. В-общем, я здесь ни при чем, Это котик виноват :-)
Решение:
1. Инициализируем переменные:
Для начала укажем Питону, какой файл он проглотит на обед и где этот файл находится:
# Путь к текстовому файлу - замените на путь, по которому расположен файл на Вашем компьютере file_path = "path_to_file"
В приведенной выше строчке кода нужно поменять «path_to_file» на путь к вашему файлу. Если вы новичок и не знаете, как задать путь к файлу, прочитайте инструкцию по ссылке: «Как задать путь к файлу».
Затем определим искомую фразу:
# Путь к текстовому файлу - замените на путь, по которому расположен файл на Вашем компьютере file_path = "path_to_file" # Какую фразу будем искать: required = 'я здесь ни при чем'
2. Открываем файл и построчно считываем данные:
Откроем файл с помощью конструкции with open и оформим построчное считывание из файла с помощью функции enumerate() так, чтобы номер строки считывался в переменную num_line, а сама строка — в переменную line:
# Путь к текстовому файлу - замените на путь, по которому расположен файл на Вашем компьютере file_path = "path_to_file" # Какую фразу будем искать: required = 'я здесь ни при чем' # Считываем данные with open(file_path) as file: for num_line, line in enumerate(file):
Подробнее о построчном чтении файла можно прочитать по ссылке в статье «Построчное чтение файла в Python 3».
3. Проверяем строки на вхождение искомой фразы
Добавим в цикл for проверку каждой считанной строки на вхождение фразы required. Как только такая строка будет найдена, выведем ее номер и выйдем из цикла с помощью break:
# Путь к текстовому файлу - замените на путь, по которому расположен файл на Вашем компьютере file_path = "path_to_file" # Какую фразу будем искать: required = 'я здесь ни при чем' # Считываем данные with open(file_path) as file: for num_line, line in enumerate(file): if required in line: print(num_line) break
Цель достигнута: номер строки найден!
Запускаем код и тестируем его работоспособность. Номер строки с фразой «я здесь ни при чем» выведен правильно! Обратите внимание, что по умолчанию, функция enumerate() производит нумерацию строк с нуля(не с единицы!), поэтому программа вывела на экран номер строки: 8.
Наведем красоту — поместим код в функцию!
Несмотря на то, что цель достигнута и программа успешно выводит номер строки с искомой фразой, предлагаю еще немного поработать. Давайте упакуем написанный код в функцию, а затем осуществим ее вызов с заданными параметрами: путем к файлу и искомой фразой. Выглядеть это будет так:
# Путь к текстовому файлу - замените на путь, по которому расположен файл на Вашем компьютере file_path = "path_to_file" # Затем определим искомую фразу: required = 'я здесь ни при чем' # Функция для поиска номера строки def find_string_number(path_to_file, required): with open(path_to_file) as file: for num_line, line in enumerate(file): if required in line: return(num_line) return('Ни одной строки с заданным содержанием не нашлось. Sorry. Это котик виноват') # Осуществим вызов функции string_number = find_string_number(file_path, required) print(string_number)
<strong>Результат работы скрипта:</strong> <strong>8</strong>
Как работает скрипт?
Описанная выше функция find_string_number содержит два параметра: путь к файлу path_to_file и искомую фразу required. После открытия файла, производим построчное считывание с помощью функции enumerate(), в результате чего номер текущей строки считывается в переменную num_line, а текст строки в переменную line. В цикле if проверяем вхождение фразы required в строку line. Если вхождение найдено, то возвращаем номер строки и выходим из цикла for. Если после проверки всех строк, вхождение не было выявлено, возвращаем сообщение о провале операции: ‘Ни одной строки с заданным содержанием не нашлось. Sorry. Это котик виноват’.
Отлично! Мы справились с заданием и научились находить первую строку в файле с искомой фразой! Теперь, опираясь на написанный выше код, мы легко сможем решить похожую задачу. На этот раз предлагаю не ограничиваться номером первой найденной строки, а вывести номера всех строк, содержащих искомую фразу! Да, и фразу поменяем: будем искать подстроку, порочащую честь ушастого: «Это котик виноват».
Задача №2: Выводим номера всех строк, содержащих искомое вхождение
Техническое задание:
Цель: вывести на экран номера всех строк, в которых содержится фраза: «Это котик виноват».
Порядок выполнения:
1. Инициализировать файл, в котором будем осуществлять поиск, а также определить искомую фразу.
2. Открыть заданный файл и произвести построчное считывание текста. При считывании каждую строку файла проверять на вхождение фразы: «это котик виноват». Если фраза в строке найдена, добавить номер строки в список string_numbers. Вывести все элементы списка string_numbers на экран.
Решение:
1. Инициализация переменных
Прежде всего предлагаю определиться, куда мы будем складывать найденные номера строк? На мой взгляд, массив — вполне пригодная тара для такого хранения. Поэтому помимо пути к файлу и переменной для хранения искомой фразы, инициализируем список: string_numbers:
# Путь к текстовому файлу - замените на путь, по которому расположен файл на Вашем компьютере file_path = "path_to_file" # Искомая фраза: required = 'Это котик виноват' # Пустой список для хранения найденных номеров строк string_numbers = []
2. Открываем файл, построчно считываем содержимое файла и проверяем каждую строку на вхождение подстроки required. Если вхождение найдено, добавляем номер строки в конец списка string_numbers. После проверки всех строк, выводим список на экран:
# Путь к текстовому файлу - замените на путь, по которому расположен файл на Вашем компьютере file_path = "path_to_file" # Искомая фраза: required = 'Это котик виноват' # Пустой список для хранения найденных номеров строк string_numbers = [] with open(file_path) as file: for num_line, line in enumerate(file): if required in line: string_numbers.append(num_line) print(string_numbers)
В результате работы скрипт отыскал 2 строки с вхождением required и вывел их в виде списка на экран:
<strong>[1, 9]</strong>
Финальное преображение кода: создаём функцию поиска номеров строк с заданным вхождением
А теперь, тренировки ради, предлагаю оформить написанный выше полезный код в красивую функцию под названием find_string_numbers() с двумя параметрами: file_path — содержит путь к файлу и required — содержит искомую фразу:
# Путь к текстовому файлу - замените на путь, по которому расположен файл на Вашем компьютере file_path = "path_to_file" # Искомая фраза: required = 'Это котик виноват' # Пустой список для хранения найденных номеров строк string_numbers = [] # Функция возвращает список номеров строк с заданным вхождением: def find_string_numbers(path_to_file, required_text): with open(path_to_file) as file: for num_line, line in enumerate(file): if required_text in line: string_numbers.append(num_line) if(len(string_numbers)>0): return(string_numbers) else: return("Ни одной строки с заданным содержанием не нашлось. Sorry. Это котик виноват") string_numbers = find_string_numbers(file_path, required) print(string_numbers)
В данном варианте, после прохождения цикла for и проверки всех считанных строк, добавлена проверка на длину списка. Если длина списка больше нуля, это значит, что, как минимум, одна строка содержит искомую фразу и функция find_string_numbers() возвращает список с номерами строк. В противном случае, функция вернет сообщение «Ни одной строки с заданным содержанием не нашлось. Sorry. Это котик виноват».
Подводим итог
Как показывает практика, в Python приятно иметь дело с файлами. Если открывать файл с помощью конструкции with, то можно не беспокоиться о его закрытии — python сделает эту работу за нас. А функция enumerate() самостоятельно пронумерует все строки файла. Так что нам останется проявить лишь немного навыков работы с циклами, чтобы с позволения Python найти номер строки (или отыскать все строки) с заданным вхождением.
I need to get the line number of a phrase in a text file. The phrase could be:
the dog barked
I need to open the file, search it for that phrase and print the line number.
I’m using Python 2.6 on Windows XP
This Is What I Have:
o = open("C:/file.txt")
j = o.read()
if "the dog barked" in j:
print "Found It"
else:
print "Couldn't Find It"
This is not homework, it is part of a project I am working on. I don’t even have a clue how to get the line number.
asked Oct 18, 2010 at 16:41
Zac BrownZac Brown
5,86719 gold badges57 silver badges106 bronze badges
2
lookup = 'the dog barked'
with open(filename) as myFile:
for num, line in enumerate(myFile, 1):
if lookup in line:
print 'found at line:', num
answered Oct 18, 2010 at 16:53
SachaSacha
3,7482 gold badges16 silver badges10 bronze badges
5
f = open('some_file.txt','r')
line_num = 0
search_phrase = "the dog barked"
for line in f.readlines():
line_num += 1
if line.find(search_phrase) >= 0:
print line_num
EDIT 1.5 years later (after seeing it get another upvote): I’m leaving this as is; but if I was writing today would write something closer to Ash/suzanshakya’s solution:
def line_num_for_phrase_in_file(phrase='the dog barked', filename='file.txt')
with open(filename,'r') as f:
for (i, line) in enumerate(f):
if phrase in line:
return i
return -1
- Using
with
to open files is the pythonic idiom — it ensures the file will be properly closed when the block using the file ends. - Iterating through a file using
for line in f
is much better thanfor line in f.readlines()
. The former is pythonic (e.g., would work iff
is any generic iterable; not necessarily a file object that implementsreadlines
), and more efficientf.readlines()
creates an list with the entire file in memory and then iterates through it. *if search_phrase in line
is more pythonic thanif line.find(search_phrase) >= 0
, as it doesn’t requireline
to implementfind
, reads more easily to see what’s intended, and isn’t easily screwed up (e.g.,if line.find(search_phrase)
andif line.find(search_phrase) > 0
both will not work for all cases as find returns the index of the first match or -1). - Its simpler/cleaner to wrap an iterated item in
enumerate
likefor i, line in enumerate(f)
than to initializeline_num = 0
before the loop and then manually increment in the loop. (Though arguably, this is more difficult to read for people unfamiliar withenumerate
.)
See code like pythonista
answered Oct 18, 2010 at 16:46
dr jimbobdr jimbob
16.9k7 gold badges58 silver badges80 bronze badges
3
def get_line_number(phrase, file_name):
with open(file_name) as f:
for i, line in enumerate(f, 1):
if phrase in line:
return i
print get_line_number("the dog barked", "C:/file.txt") # python2
#print(get_line_number("the dog barked", "C:/file.txt")) # python3
answered Oct 18, 2010 at 16:54
suzanshakyasuzanshakya
3,4141 gold badge25 silver badges22 bronze badges
4
suzanshakya, I’m actually modifying your code, I think this will simplify the code, but make sure before running the code the file must be in the same directory of the console otherwise you’ll get error.
lookup="The_String_You're_Searching"
file_name = open("file.txt")
for num, line in enumerate(file_name,1):
if lookup in line:
print(num)
Eric Aya
69.1k35 gold badges179 silver badges250 bronze badges
answered Jan 16, 2018 at 11:31
Open your file, and then do something like…
for line in f:
nlines += 1
if (line.find(phrase) >= 0):
print "Its here.", nlines
There are numerous ways of reading lines from files in Python, but the for line in f
technique is more efficient than most.
answered Oct 18, 2010 at 16:45
slezicaslezica
72.3k25 gold badges101 silver badges163 bronze badges
8
listStr = open("file_name","mode")
if "search element" in listStr:
print listStr.index("search element") # This will gives you the line number
answered Nov 13, 2013 at 10:26
1
You can use list comprehension:
content = open("path/to/file.txt").readlines()
lookup = 'the dog barked'
lines = [line_num for line_num, line_content in enumerate(content) if lookup in line_content]
print(lines)
answered Oct 13, 2020 at 8:38
Alon BaradAlon Barad
1,2671 gold badge13 silver badges23 bronze badges
for n,line in enumerate(open("file")):
if "pattern" in line: print n+1
answered Oct 19, 2010 at 0:21
ghostdog74ghostdog74
319k56 gold badges255 silver badges342 bronze badges
Here’s what I’ve found to work:
f_rd = open(path, 'r')
file_lines = f_rd.readlines()
f_rd.close()
matches = [line for line in file_lines if "chars of Interest" in line]
index = file_lines.index(matches[0])
answered Oct 2, 2015 at 19:50
It’s been a solid while since this was posted, but here’s a nifty one-liner. Probably not worth the headache, but just for fun
from functools import reduce
from pathlib import Path
my_lines = Path('path_to_file').read_text().splitlines()
found, linenum = reduce(lambda a, b: a if a[0] else (True, a[1]) if testid in b else (False, a[1]+1), [(False,0)] + my_lines)
print(my_lines[linenum]) if found else print(f"Couldn't find {my_str}")
Note that if there are two instances in the file, it wil
answered May 3, 2022 at 4:14
optimus_primeoptimus_prime
1,0301 gold badge10 silver badges21 bronze badges
An one-liner solution:
l_num = open(file).read()[:open(file).read().index(phrase)].count('n') + 1
and an IO safer version:
l_num = (h.close() or ((f := open(file, 'r', encoding='utf-8')).read()[:(f.close() or (g := open(file, 'r', encoding='utf-8')).read().index(g.close() or phrase))].count('n'))) if phrase in (h := open(file, 'r', encoding='utf-8')).read() else None
Explain:
file = 'file.txt'
phrase = 'search phrase'
with open(file, 'r', encoding='utf-8') as f:
text = f.read()
if phrase in text:
phrase_index = text.index(phrase)
l_num = text[:phrase_index].count('n') + 1 # Nth line has n-1 'n's before
else:
l_num = None
answered May 13, 2022 at 10:35
KumaTeaKumaTea
4385 silver badges13 bronze badges
I need to get the line number of a phrase in a text file. The phrase could be:
the dog barked
I need to open the file, search it for that phrase and print the line number.
I’m using Python 2.6 on Windows XP
This Is What I Have:
o = open("C:/file.txt")
j = o.read()
if "the dog barked" in j:
print "Found It"
else:
print "Couldn't Find It"
This is not homework, it is part of a project I am working on. I don’t even have a clue how to get the line number.
asked Oct 18, 2010 at 16:41
Zac BrownZac Brown
5,86719 gold badges57 silver badges106 bronze badges
2
lookup = 'the dog barked'
with open(filename) as myFile:
for num, line in enumerate(myFile, 1):
if lookup in line:
print 'found at line:', num
answered Oct 18, 2010 at 16:53
SachaSacha
3,7482 gold badges16 silver badges10 bronze badges
5
f = open('some_file.txt','r')
line_num = 0
search_phrase = "the dog barked"
for line in f.readlines():
line_num += 1
if line.find(search_phrase) >= 0:
print line_num
EDIT 1.5 years later (after seeing it get another upvote): I’m leaving this as is; but if I was writing today would write something closer to Ash/suzanshakya’s solution:
def line_num_for_phrase_in_file(phrase='the dog barked', filename='file.txt')
with open(filename,'r') as f:
for (i, line) in enumerate(f):
if phrase in line:
return i
return -1
- Using
with
to open files is the pythonic idiom — it ensures the file will be properly closed when the block using the file ends. - Iterating through a file using
for line in f
is much better thanfor line in f.readlines()
. The former is pythonic (e.g., would work iff
is any generic iterable; not necessarily a file object that implementsreadlines
), and more efficientf.readlines()
creates an list with the entire file in memory and then iterates through it. *if search_phrase in line
is more pythonic thanif line.find(search_phrase) >= 0
, as it doesn’t requireline
to implementfind
, reads more easily to see what’s intended, and isn’t easily screwed up (e.g.,if line.find(search_phrase)
andif line.find(search_phrase) > 0
both will not work for all cases as find returns the index of the first match or -1). - Its simpler/cleaner to wrap an iterated item in
enumerate
likefor i, line in enumerate(f)
than to initializeline_num = 0
before the loop and then manually increment in the loop. (Though arguably, this is more difficult to read for people unfamiliar withenumerate
.)
See code like pythonista
answered Oct 18, 2010 at 16:46
dr jimbobdr jimbob
16.9k7 gold badges58 silver badges80 bronze badges
3
def get_line_number(phrase, file_name):
with open(file_name) as f:
for i, line in enumerate(f, 1):
if phrase in line:
return i
print get_line_number("the dog barked", "C:/file.txt") # python2
#print(get_line_number("the dog barked", "C:/file.txt")) # python3
answered Oct 18, 2010 at 16:54
suzanshakyasuzanshakya
3,4141 gold badge25 silver badges22 bronze badges
4
suzanshakya, I’m actually modifying your code, I think this will simplify the code, but make sure before running the code the file must be in the same directory of the console otherwise you’ll get error.
lookup="The_String_You're_Searching"
file_name = open("file.txt")
for num, line in enumerate(file_name,1):
if lookup in line:
print(num)
Eric Aya
69.1k35 gold badges179 silver badges250 bronze badges
answered Jan 16, 2018 at 11:31
Open your file, and then do something like…
for line in f:
nlines += 1
if (line.find(phrase) >= 0):
print "Its here.", nlines
There are numerous ways of reading lines from files in Python, but the for line in f
technique is more efficient than most.
answered Oct 18, 2010 at 16:45
slezicaslezica
72.3k25 gold badges101 silver badges163 bronze badges
8
listStr = open("file_name","mode")
if "search element" in listStr:
print listStr.index("search element") # This will gives you the line number
answered Nov 13, 2013 at 10:26
1
You can use list comprehension:
content = open("path/to/file.txt").readlines()
lookup = 'the dog barked'
lines = [line_num for line_num, line_content in enumerate(content) if lookup in line_content]
print(lines)
answered Oct 13, 2020 at 8:38
Alon BaradAlon Barad
1,2671 gold badge13 silver badges23 bronze badges
for n,line in enumerate(open("file")):
if "pattern" in line: print n+1
answered Oct 19, 2010 at 0:21
ghostdog74ghostdog74
319k56 gold badges255 silver badges342 bronze badges
Here’s what I’ve found to work:
f_rd = open(path, 'r')
file_lines = f_rd.readlines()
f_rd.close()
matches = [line for line in file_lines if "chars of Interest" in line]
index = file_lines.index(matches[0])
answered Oct 2, 2015 at 19:50
It’s been a solid while since this was posted, but here’s a nifty one-liner. Probably not worth the headache, but just for fun
from functools import reduce
from pathlib import Path
my_lines = Path('path_to_file').read_text().splitlines()
found, linenum = reduce(lambda a, b: a if a[0] else (True, a[1]) if testid in b else (False, a[1]+1), [(False,0)] + my_lines)
print(my_lines[linenum]) if found else print(f"Couldn't find {my_str}")
Note that if there are two instances in the file, it wil
answered May 3, 2022 at 4:14
optimus_primeoptimus_prime
1,0301 gold badge10 silver badges21 bronze badges
An one-liner solution:
l_num = open(file).read()[:open(file).read().index(phrase)].count('n') + 1
and an IO safer version:
l_num = (h.close() or ((f := open(file, 'r', encoding='utf-8')).read()[:(f.close() or (g := open(file, 'r', encoding='utf-8')).read().index(g.close() or phrase))].count('n'))) if phrase in (h := open(file, 'r', encoding='utf-8')).read() else None
Explain:
file = 'file.txt'
phrase = 'search phrase'
with open(file, 'r', encoding='utf-8') as f:
text = f.read()
if phrase in text:
phrase_index = text.index(phrase)
l_num = text[:phrase_index].count('n') + 1 # Nth line has n-1 'n's before
else:
l_num = None
answered May 13, 2022 at 10:35
KumaTeaKumaTea
4385 silver badges13 bronze badges
Cufee 2 / 1 / 1 Регистрация: 16.09.2021 Сообщений: 56 | ||||
1 | ||||
Как узнать номер строки и вывести ее16.12.2022, 11:31. Показов 255. Ответов 3 Метки нет (Все метки)
есть такая программа:
задача состоит в том, если имеется слово которое ввел пользователь, вывелся номер строки и вся целая строка, как это реализовать? __________________
0 |
Йуный падаван 13753 / 8008 / 2455 Регистрация: 21.10.2017 Сообщений: 19,412 | |
16.12.2022, 11:36 | 2 |
Очевидно, перебирать строки. И при искомом совпадении вывести строку и номер.
0 |
2 / 1 / 1 Регистрация: 16.09.2021 Сообщений: 56 | |
16.12.2022, 11:56 [ТС] | 3 |
iSmokeJC, все круто здорово, но вот он ищет только по первому слову из строки, а у меня к примеру есть база, как сделать поиск по всем словам из текстового документа?
0 |
Йуный падаван 13753 / 8008 / 2455 Регистрация: 21.10.2017 Сообщений: 19,412 | |
16.12.2022, 12:00 | 4 |
Перебирать эти слова в цикле и искать.
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 | 16.12.2022, 12:00 |
Помогаю со студенческими работами здесь Как узнать номер строки в ListBox? Как узнать номер счетчика у строки
Как узнать номер строки в файле по слову? Как узнать порядковый номер строки Interbase Как узнать номер последней строки с данными? До сего момента пользовался двумя… Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 4 |
В основной оболочке IDLE ошибки всегда возвращают номер строки, но в среде разработки даже нет номеров строк. Есть ли способ включить номера строк?
Версия 3.8 или новее:
Чтобы отобразить номера строк в текущем окне, перейдите к Options и щелкните Show Line Numbers .
Для того, чтобы показать их автоматически, перейдите к Options > Configure IDLE > General и проверить Show line numbers in new windows коробку.
Версия 3.7 или старше:
К сожалению, в IDLE нет возможности отображать номера строк, хотя для этого открыт запрос на расширение .
Однако есть несколько способов обойти это:
В меню редактирования есть опция перехода к строке (для этого по умолчанию используется сочетание клавиш Alt + G).
В правом нижнем углу есть дисплей, который сообщает вам ваш текущий номер строки / позицию в строке:
Для IDLE есть набор полезных расширений под названием IDLEX, которые работают с MacOS и Windows http://idlex.sourceforge.net/
Он включает в себя нумерацию строк, и я нахожу его довольно удобным и бесплатным.
В противном случае существует множество других IDE, некоторые из которых бесплатны: https://wiki.python.org/moin/IntegratedDevelopmentEnvironments
Если вы пытаетесь отследить, какая строка вызвала ошибку, если вы щелкните правой кнопкой мыши в оболочке Python, где отображается ошибка строки, появится сообщение «Перейти к файлу / строке», которое приведет вас прямо к нужной строке. .
Как было упомянуто Давосом, вы можете использовать IDLEX
Бывает, что я использую версию для Linux и из всех расширений мне нужны были только LineNumbers. Итак, я загрузил архив IDLEX, взял из него LineNumbers.py, скопировал его в папку Python lib (в моем случае это /usr/lib/python3.5/idlelib) и добавил следующие строки в файл конфигурации в моей домашней папке, которая является
Номера строк были добавлены в редактор IDLE два дня назад и появятся в следующих версиях 3.8.0a3 и более поздних версиях 3.7.5. Для новых окон они отключены по умолчанию, но это можно отменить в диалоговом окне «Настройка», на вкладке «Общие», в разделе «Редактор». Для существующих окон в меню «Параметры» есть новая запись «Показать (скрыть) номера строк». В настоящее время горячей клавиши нет. Можно выбрать линию или блок линий, щелкнув линию или щелкнув и перетащив.
Некоторые люди могли пропустить Edit / Go to Line. Контекстное меню, вызываемое правой кнопкой мыши, «Перейти к файлу / строке» работает с выводом grep (Найти в файлах), а также с обратными ссылками.
Как включить номера строк в IDLE?
В основной оболочке IDLE ошибки всегда возвращают номер строки, но в среде разработки даже нет номеров строк. Есть ли способ включить номера строк?
6 ответов
Как уже упоминалось выше (быстрый способ сделать это):
Затем я создаю ярлык на рабочем столе (Win10) следующим образом:
Пути могут быть разными и должны быть изменены:
(Спасибо за отличные ответы выше)
Существует ряд полезных расширений для IDLE, называемых IDLEX, которые работают с MacOS и Windows http://idlex.sourceforge.net/
Он включает в себя нумерацию строк, и я нахожу это довольно удобным и бесплатным.
В противном случае есть множество других IDE, некоторые из которых бесплатны: https://wiki.python.org/moin / IntegratedDevelopmentEnvironments
Как уже упоминал Давос, вы можете использовать IDLEX
Бывает, что я использую версию Linux, и из всех расширений мне нужны были только номера строк. Поэтому я скачал архив IDLEX, взял из него LineNumbers.py, скопировал его в папку lib Python (в моем случае это /usr/lib/python3.5/idlelib) и добавил следующие строки в файл конфигурации в моей домашней папке, которая
/ .idlerc / конфиг — extensions.cfg :
Как @StahlRat уже ответил. Я хотел бы добавить еще один метод для этого. Существует пакет расширений для редактора простоя Python по умолчанию Пакет расширений Python.
Если вы пытаетесь отследить, какая строка вызвала ошибку, если вы щелкните правой кнопкой мыши в оболочке Python, где отображается ошибка строки, появится «Перейти к файлу / строке», которая приведет вас непосредственно к рассматриваемой строке. ,
Номера строк были добавлены в редактор IDLE два дня назад и появятся в следующих 3.8.0a3 и более поздних 3.7.5. Для новых окон они по умолчанию отключены, но это можно изменить в диалоговом окне «Настройка» на вкладке «Общие» в разделе «Редактор». Для существующих окон в меню «Параметры» появилась новая запись «Показать (скрыть) номера строк». Там в настоящее время нет горячей клавиши. Можно выбрать линию или блок линий, щелкнув по линии или нажав и перетащив.
Некоторые люди, возможно, пропустили Edit / Go to Line. Контекстное меню правой кнопки мыши «Перейти к файлу / строке» работает как с выводом grep (Find in Files), так и с обратными ссылками.
Как включить номера строк в IDLE?
В основной оболочке IDLE ошибки всегда возвращают номер строки, но в среде разработки даже нет номеров строк. Есть ли способ включить номера строк?
4 ответа
Существует ряд полезных расширений для IDLE, называемых IDLEX, которые работают с MacOS и Windows http://idlex.sourceforge.net /
Он включает в себя нумерацию строк, и я нахожу это очень удобным & свободно.
В противном случае есть множество других IDE, некоторые из которых бесплатны: https: //wiki.python. орг /МойнМойн /IntegratedDevelopmentEnvironments
Если вы пытаетесь отследить, какая строка вызвала ошибку, если вы щелкните правой кнопкой мыши в оболочке Python, где отображается ошибка строки, появится «Перейти к файлу /строке», которая приведет вас непосредственно к рассматриваемая строка.
Как уже упоминал Давос, вы можете использовать IDLEX
Бывает, что я использую версию Linux, и из всех расширений мне нужны были только номера строк. Поэтому я скачал архив IDLEX, взял из него LineNumbers.py, скопировал его в папку lib Python (в моем случае это /usr/lib/python3.5/idlelib) и добавил следующие строки в файл конфигурации в моей домашней папке, которая
Как @StahlRat уже ответил. Я хотел бы добавить еще один метод для этого. Существует пакет расширений для редактора простоя Python по умолчанию.