[BangPypers] plist files
Python User
python.user.01 at gmail.com
Tue Mar 15 14:48:26 CET 2011
Hi All
Again I am struck with an Issue if the plist file has multiple dictionary in
it then I am not able to get the value of particular key element for
example, In the below plist file I wanted to get the value of stepID &
COMPONENTNAME
key.
I was trying like this
for key in plist:
if 'results' in key:
stepIDValue = key['results']['Steps']['stepID']
I am getting error "string indices must be integers, not str". Please help
me out
PLIST FILE ::::
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//test//EN" "
http://www.test.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>commandStatus</key>
<string>success</string>
<key>comments</key>
<string>Get Test Script</string>
<key>results</key>
<array>
<dict>
<key>Keywords</key>
<string>No keywords.</string>
<key>Steps</key>
<array>
<dict>
<key>activeFlag</key>
<string>0</string>
<key>expectedResult</key>
<string></string>
<key>expectedTime</key>
<string>0000:00:00</string>
<key>instructions</key>
<string>Launch</string>
<key>stepData</key>
<string>Test APP</string>
<key>stepID</key>
<string>7663365</string>
<key>stepNumber</key>
<string>1</string>
<key>stepPriority</key>
<string>5</string>
<key>summary</key>
<string></string>
<key>title</key>
<string>Launching SDM Application</string>
</dict>
</array>
<key>columns</key>
<dict>
<key>ACTIVE_FLAG</key>
<string>1</string>
<key>BUSINESS_CATEGORY</key>
<string></string>
<key>CHANGE_MANAGEMENT_ID</key>
<string></string>
<key>COMPONENTNAME</key>
<string>Software Client</string>
<key>COMPREVVERS</key>
<string>Admin</string>
<key>CREATION_DATE</key>
<string>15-Mar-2011 04:52:01</string>
<key>LAST_UPDATE_DATE</key>
<string>15-Mar-2011 06:06:52</string>
<key>PRIORITY</key>
<string>5</string>
<key>REGRESSION</key>
<string></string>
<key>STATUS_ID</key>
<string>1</string>
<key>TEST_LEVEL</key>
<string></string>
<key>TEST_REGION</key>
<string></string>
<key>TEST_SCRIPT_TITLE</key>
<string>Software_Auto</string>
<key>TRACK_NAME</key>
<string></string>
</dict>
</dict>
</array>
</dict>
</array>
</plist>
On Tue, Mar 15, 2011 at 11:03 AM, Python User <python.user.01 at gmail.com>wrote:
> Hi Vinay,
>
> Thanks a Lot it worked for me :)
>
> Thanks Once Again....
>
>
> On Tue, Mar 15, 2011 at 1:27 AM, Vinay Shastry <vinayshastry at gmail.com>wrote:
>
>> On 15 March 2011 01:21, Vinay Shastry <vinayshastry at gmail.com> wrote:
>> > On 14 March 2011 17:21, Python User <python.user.01 at gmail.com> wrote:
>> >> Hi All,
>> >>
>> >> I have a plist file, test.plist, All I want is read the scriptNO tag
>> value
>> >> 12345 and replace it with 67899. Can any one please help me out for
>> >> this. The file content is
>> >>
>> >> <?xml version="1.0" encoding="UTF-8"?>
>> >> <!DOCTYPE plist PUBLIC "-//test//EN" "
>> >> http://www.test.com/DTDs/PropertyList-1.0.dtd">
>> >> <plist version="1.0">
>> >> <array>
>> >> <dict>
>> >> <key>command</key>
>> >> <string>GetTestScriptData</string>
>> >> <key>comments</key>
>> >> <string>Get Test Script</string>
>> >> <key>opParam</key>
>> >> <dict>
>> >> <key>scriptNO</key>
>> >> <string>12345</string>
>> >> <key>columnNames</key>
>> >> <string>Test case</string>
>> >> <key>fetchKey</key>
>> >> <string>1</string>
>> >> <key>fetchData</key>
>> >> <string>1</string>
>> >> </dict>
>> >> </dict>
>> >> </array>
>> >> </plist>
>> >>
>> >> I was using the below code to read the plist file, but I am not able
>> to
>> >> search the scriptNo and replace it with other value.
>> >>
>> >> import plistlib
>> >> file = ('/Users/me/Desktop/test.plist')
>> >> plist = plistlib.readPlist(file)
>> >> print plist
>> >>
>> >> Please help me out to solve this. Thanks In Advance.
>> >
>> > The answer is in your plist format itself. Everything is enclosed in
>> > an array - which becomes a list in py.
>> >
>> > How about something like this:
>> >
>> > for key in plist:
>> > if 'opParam' in key and 'scriptNO' in key['opParam']:
>> > key['opParam']['scriptNO'] = 67899
>> >
>> > plistlib.writePlist(plist, "mynewfile.plist")
>> >
>> >
>> > Also, is there a reason why file is a tuple containing filename, and
>> > not just a string?
>> >
>>
>> Oh, and your DTD is wrong.
>>
>> --
>> Vinay S Shastry
>> _______________________________________________
>> BangPypers mailing list
>> BangPypers at python.org
>> http://mail.python.org/mailman/listinfo/bangpypers
>>
>
>
More information about the BangPypers
mailing list