[Tutor] a quick Q: how to use for loop to read a series of files with .doc end
lina
lina.lastname at gmail.com
Thu Oct 6 16:11:32 CEST 2011
On Thu, Oct 6, 2011 at 1:39 PM, Andreas Perstinger <
andreas.perstinger at gmx.net> wrote:
> On 2011-10-06 05:46, lina wrote:
>
>> On Thu, Oct 6, 2011 at 4:33 AM, Prasad, Ramit<ramit.prasad at jpmorgan.**com<ramit.prasad at jpmorgan.com>
>> >wrote:
>>
>>> Dictionaries {} are containers for key/value based pairs like { key :
>>>
>>> value, another_key : value(can be same or repeated) }
>>>
>>> For example:
>>> {'B': [0, 0, 0, 0, 0, 0], 'E': [2, 1, 4, 0, 1, 0]}
>>> The keys here are 'B' and 'E'. The values here are [0, 0, 0, 0, 0, 0]
>>> (for
>>>
>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^**^^^
>
>> key 'B') and [2, 1, 4, 0, 1, 0] (for key 'E')
>>>
>>
>> def writeonefiledata(outname,**results):
>> outfile = open(outname,"w")
>> for key in results:
>> return outfile.write(results[key])
>>
>> $ python3 counter-vertically-v2.py
>> Traceback (most recent call last):
>> File "counter-vertically-v2.py", line 43, in<module>
>> dofiles(".")
>> File "counter-vertically-v2.py", line 12, in dofiles
>> processfile(filename)
>> File "counter-vertically-v2.py", line 29, in processfile
>> writeonefiledata(base+**OUTFILEEXT,results)
>> File "counter-vertically-v2.py", line 39, in writeonefiledata
>> return outfile.write(results[key])
>> TypeError: must be str, not list
>>
> ^^^^^^^^^^^^^^^^^^^^^
> The error message tells you, that "results[key]" is a list but "write" just
> excepts a string. (see Ramit's explanation above).
> You have to convert the list values to a string.
>
I still don't know how to (standard) convert the list values to a string.
def writeonefiledata(outname,results):
outfile = open(outname,"w")
for key, value in results.items():
print(value)
outfile.write(str(results[key]))
Is it a wrong way?
Thanks all for the help.
> BTW: You shouldn't return the write operation because that will exit your
> function after the first iteration.
>
>
> def writeonefiledata(outname,**results):
>> outfile = open(outname,"w")
>> for key, value in results.iteritems():
>> return outfile.write(key)
>>
>> $ python3 counter-vertically-v2.py
>> Traceback (most recent call last):
>> File "counter-vertically-v2.py", line 43, in<module>
>> dofiles(".")
>> File "counter-vertically-v2.py", line 12, in dofiles
>> processfile(filename)
>> File "counter-vertically-v2.py", line 29, in processfile
>> writeonefiledata(base+**OUTFILEEXT,results)
>> File "counter-vertically-v2.py", line 38, in writeonefiledata
>> for key, value in results.iteritems():
>> AttributeError: 'dict' object has no attribute 'iteritems'
>>
>
> In Python 3 there is no "dict.iteritems()" any more:
> http://docs.python.org/py3k/**whatsnew/3.0.html#views-and-**
> iterators-instead-of-lists<http://docs.python.org/py3k/whatsnew/3.0.html#views-and-iterators-instead-of-lists>
> Use "dict.items()" instead
>
> Bye, Andreas
>
>
> ______________________________**_________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/**mailman/listinfo/tutor<http://mail.python.org/mailman/listinfo/tutor>
>
--
Best Regards,
lina
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20111006/ba1b616d/attachment.html>
More information about the Tutor
mailing list