[Tutor] Simultaneous read and write on file
Anshu Kumar
anshu.kumar726 at gmail.com
Tue Jan 19 00:41:40 EST 2016
Hello All,
So much Thanks for your response.
Here is my actual scenario. I have a csv file and it would already be
present. I need to read and remove some rows based on some logic. I have
written earlier two separate file opens which I think was nice and clean.
actual code:
with open(file_path, 'rb') as fr:
for row in csv.DictReader(fr):
#Skip for those segments which are part of overridden_ids
if row['id'] not in overriden_ids:
segments[row['id']] = {
'id': row['id'],
'attrib': json.loads(row['attrib']),
'stl': json.loads(row['stl']),
'meta': json.loads(row['meta']),
}
#rewriting files with deduplicated segments
with open(file_path, 'wb') as fw:
writer = csv.UnicodeWriter(fw)
writer.writerow(["id", "attrib", "stl", "meta"])
for seg in segments.itervalues():
writer.writerow([seg['id'], json.dumps(seg["attrib"]),
json.dumps(seg["stl"]), json.dumps(seg["meta"])])
I have got review comments to improve this block by having just single
file open and minimum memory usage.
Thanks and Regards,
Anshu
On Tue, Jan 19, 2016 at 11:04 AM, Cameron Simpson <cs at zip.com.au> wrote:
> On 18Jan2016 20:41, Martin A. Brown <martin at linux-ip.net> wrote:
>
>> Yes and so have I. Maybe twice in 30 years of programming. [...]
>>>>
>>>
>>> I may have done it a little more than that; I agree it is very
>>> rare. I may be biased because I was debugging exactly this last
>>> week. (Which itself is an argument against mixed rerad/write with
>>> one file - it was all my own code and I spent over a day chasing
>>> this because I was looking in the wrong spot).
>>>
>>
>> Oh yes. Ooof. Today's decisions are tomorrow's albatross.
>>
>
> Actually I have good reason to mix these in this instance, and now that it
> is debugged it is reliable and more efficient to boot.
>
> [...]
>
>> Tip for new players: if you do any .write()s, remember to do a
>>>>> .flush() before doing a seek or a read
>>>>>
>>>>
>>>> That's exactly my point. There are so many things you have to do
>>>> extra when working in mixed mode. Too easy to treat things like
>>>> normal mode files and get it wrong. Experts can do it and make it
>>>> work, but mostly it's just not needed.
>>>>
>>>
>>> Yes. You're write - for simplicity and reliability two distinct
>>> open file instances are much easier.
>>>
>>
>> Yes, he's write [sic]. He writes a bunch! ;)
>>
>
> Alas, I have a tendency to substitute homophones, or near homophones, when
> typing in a hurry. You'll see this in a bunch of my messages. More
> annoyingly, some are only visible when I reread a posted message instead of
> when I was proofreading prior to send.
>
> [Homonyms mess me up when I'm typing, all sew.]
>>
>
> Homonyms too.
>
> Cheers,
> Cameron Simpson <cs at zip.com.au>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
More information about the Tutor
mailing list