Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

how to get data from text file and rewrite to another from

  • hello beautiful people so i have a text file like this :

  • user = user447

  • pass = 455555az

    MEDevel.com: Open-source for Healthcare and Education

    Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

    Visit Medevel

  • type = registred

  • date = 1 year

    and i want to read the file and rewrite it like this

  1. user|pass|type|date,
    line by line,
    i tried so many ways , i seem stuck since i have to deal with 1 million account
with open(file, "r") as f:
 data = []
 for line in f:
    key = line.rstrip('\n').split('=')
    key1 = key[1:2]

>Solution :

You don’t need to read the entire file all at once, instead, you can just read it in parts and write as you read (note the with block is used for two open() context managers, though you can nest them inside each other just as easily)

with open(source) as fh_src, open(destination, "w") as fh_dest:
    block = []
    for lineno, line in enumerate(fh_src, 1):
        # .split("=", 1)[-1] captures everything after the first =
        # this is also an opportunity to verify the key
        block.append(line.split("=", 1)[-1].strip())
        if len(block) == 4:
            fh_dest.write("{}|{}|{}|{}\n".format(*block))
            block = []  # reset block after each write

it’s definitely worth creating some safeguards, however!

  • checking if lines really start with some key if you have a set of known keys or have some you intend to omit, or if you have some dynamic set of keys (say some users have a collection of previous password hashes, or different comments)
  • checking if block at the end (it should be cleared and write!)
  • checking = is really in each line or that any comments are kept or discarded
  • opening "w" will remove destination if it exists already (perhaps from a botched previous run), which may be undesirable

(lineno is only included to simplify discovering bad lines)

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading