Получить имя (номер) текстовых файлов из каталога и использовать имя файла (номер) для поиска данных в отдельном текстовом файле

Я новичок в питоне. У меня есть несколько текстовых файлов в каталоге, и отдельный текстовый файл содержит исходные ссылки для каждого из текстовых файлов. То есть, у меня есть 1.txt, 2.txt и 3.txt, сохраненные в каталоге, и у меня есть текстовый файл веб-ссылки (строка 1 (wiki.com/a) является ссылкой для 1.txt, строка 2 (wiki.com /b — это ссылка для 2.txt...). Я могу получить имена текстовых файлов, но не могу использовать результат для поиска ссылок из текстового файла веб-ссылок.

#first part
path = 'C:\\Users\\PycharmProjects\\pythonProject1\\Document'
files = [os.path.splitext(filename)[0] for filename in os.listdir(path)]
print(files) #result from here is ['1', '2', '3']

#second part
file = open("C:\\Users\\PycharmProjects\\pythonProject1\\link.txt")
specified_lines = files #files are taking the result from first part

for pos, l_num in enumerate(file):
    if pos in specified_lines:
        print(l_num)

если я использую selected_lines = [0,1,2], то функция работает, как мне включить вывод из моей первой части во вторую часть? На данный момент указанные_линии = файлы во второй части ничего не возвращают.

Вы упомянули, что это отдельные функции — вы передаете files второй функции? Если вы сделаете print(files) во второй функции, что она скажет?

kconsiglio 24.11.2022 01:54

да, я передаю файлы из первой функции во вторую функцию, чтобы найти соответствующую ссылку для каждого номера файла в link.txt. когда я печатаю (файлы) под печатью (l_num) во второй функции, она ничего не возвращает.

blu 24.11.2022 02:06

не могли бы вы включить строки, где вы вызываете эти функции?

kconsiglio 24.11.2022 02:17

не уверен, что сделал это правильно, но все мои коды просто объединяют первую и вторую часть того, что я поделился в описании своего поста.

blu 24.11.2022 02:54
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
326
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Надеюсь это поможет.

  1. Попробуйте напечатать pos, я вижу, что он основан на 0, поэтому вы можете сместить pos
  2. Попробуйте преобразовать pos из целого числа в строку перед поиском
import os

path = '.'
files = [os.path.splitext(filename)[0] for filename in os.listdir(path)]
print(files) #result from here is ['1', '2', '3']

#second part
file = open("weblink")
specified_lines = files #files are taking the result from first part

for pos, l_num in enumerate(file):
    print(pos)
    if str(pos+1) in specified_lines:
        print(l_num)

Результат моей попытки:

['orig', 'weblink', 'notes', '3', '2', '1']
0
wiki.com/a

1
wiki.com/b

2
wiki.com/c

Другие вопросы по теме