Итерация по словарю, разделение на массивы и вывод - PullRequest
0 голосов
/ 11 апреля 2019

Я довольно новичок в Python, кто-нибудь может помочь с решением?

У меня есть 3-4 слоя каталогов с файлами в них.Все файлы имеют данные в следующем формате:

data1:data2

data3:data4

data5:data6

...

Я хочу перебирать файлы и читать все строки, добавлять их в массив и выводить только данные послезапятая.

Это то, что я пытался:

import os

output_file = input("Enter output file: ")
folder_location = input("Enter directory: ")
while os.path.isdir(folder_location) is False:
    print("Directory not found, enter again: ")
    folder_location = input("Enter directory: ")

for subdir, dirs, files in os.os.walk(folder_location):
    for file in files:
        file = open()
        for line in file:
            fields = line.split(":")
            email = fields[0]
            password = fields[1]

Вывод должен выглядеть следующим образом:

data2

data4

data6

1 Ответ

0 голосов
/ 11 апреля 2019

Вы можете сделать это так:

with open('result_file.txt', 'w') as result_file:

    for directory, _, filenames in os.walk(folder_location):

        for filename in filenames:
            full_path = os.path.join(directory, filename)

            with open(full_path, 'r') as source_file:
                for line in source_file:
                    stripped = line.rstrip()
                    email, password = stripped.split(':', maxsplit=1)

                    print(password, file=result_file)

maxsplit=1 гарантирует, что ваша строка разбита не более чем на 2 компонента. Это важно в том случае, если пароль также содержит двоеточие. Без maxsplit=1 это даст вам 3 компонента, то есть последние два будут разбиты на середину пароля.

Если вы используете Python 2.7, функция print() с поддержкой file= не будет доступна по умолчанию, но вы можете сделать ее доступной, поставив ее вверху вашей программы:

from __future__ import print_function

Если вы застряли на более старой версии Python или не хотите использовать print(), вы можете сделать это вместо этого:

result_file.write(password + "\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...