2010-08-09 8 views
0

Je dois lire un fichier plist et rechercher une chaîne, puis ajouter une nouvelle ligne de texte sur la ligne suivante. Je ne peux pas imaginer qu'il en faudra beaucoup pour le faire. Cependant, le plist est en format binaire, donc pas vraiment sûr de savoir comment faire face à cela.Rechercher du texte puis ajouter une ligne après Python

Merci à l'avance,

Aaron

#Convert plist to XML 
os.system('plutil -convert xml1 com.apple.iChat.Jabber.plist') 

AutoDiscovery = "<integer>0<integer>" 

import fileinput 
for line in fileinput.FileInput("com.apple.iChat.Jabber.plist",inplace=1): 
    line = line.replace("<key>AutoDiscoverHostAndPort</key>",AutoDiscovery) 
    print line, 

#Concert plist to binary file 
os.system('plutil -convert binary1 com.apple.iChat.Jabber.plist') 
+0

Est-ce fichier plist sur OS X? – dawg

+0

Oui, c'est sur OS X – Aaron

+0

Utilisez 'plutil' pour convertir. – dawg

Répondre

0

Utilisez plistlib pour tous vos besoins de fichiers plist. Aucune conversion nécessaire.

+0

Est-ce que plistlib supporte les plistes binaires? –

+0

J'ai trouvé comment utiliser plutil pour convertir en XML et le dos en binaire. Ce qui me pose toujours problème, c'est de trouver une chaîne dans le fichier et d'ajouter une nouvelle ligne de texte sur la ligne suivante. – Aaron

2

Vous voulez convertir en format xml premier:

plutil -convert xml file.plist 

Ensuite, le reste devrait être assez facile.

EDIT:

newFile = open('file.copy', 'w+') 
for line in open('file'): 
    if (line.find('string_to_find') >= 0): 
     # do something with "line" 
    newFile.write(line) 
newFile.close() 

EDIT2:

# convert plist from binary to xml 

plist = plistlib.readPlist('your.plist') 
plist['key'] = 0 
plistlib.writePlist('your.plist') 

# convert plist from xml to binary 
+0

Merci, je viens de comprendre cela pour convertir en xml et retour. Je ne suis pas sûr cependant comment trouver la chaîne de texte et ajouter une nouvelle ligne de texte après. Connaissez-vous cela? – Aaron

+0

Désolé je ne suis pas le meilleur avec python. Je suppose que j'ai besoin d'écrire quelque chose sous l'instruction if mais je ne sais pas comment le faire écrire après la chaîne trouvée. Plus précisément, je dois juste écrire après le 'string_to_find' – Aaron

+0

Vous pourriez essayer un peu plus difficile de trouver la solution vous-même: http://rgruet.free.fr/PQR25/PQR2.5.html –

Questions connexes