[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