comparer les lignes d'un fichier
Salut,
J'essaye douleureusement de faire des trucs simples mais je ne suis pas compatible avec Python on dirait.
Par exemple je veux afficher seulement les lignes qui finissent par / donc j'essaye ca :
Code:
1 2 3 4 5 6 7 8
|
f=open(sys.argv[1], 'r')
for line in f:
if line.endswith('/'):
print line,
f.close() |
Mais ca ne fonctionne pas, une idée du pourquoi ?
Mon but est de pouvoir a terme implémenter l'algo suivant :
Code:
1 2 3 4 5 6 7 8
|
# if line endswith "/" append line to dirstring
# else
# if (dirstring not empty)
# printf SetOutPath "$INSTDIR" . join(dirstring)
# dirstring=""
# else
# printf "File \"C:\GNUstep-devel\1.0.11\" line |
le but etant de générer une liste de fichiers compatible avec l'installeur opensource nsis qui a chaque fois qu'il y a un repertoire ajoute la chaine SetOutPath"$INSTDIR suivi du nom du repertoire s'il y en a un:
SetOutPath "$INSTDIR\bin"
File "C:\GNUstep-devel\1.0.11\bin\awk"
...
SetOutPath "$INSTDIR\doc\msys"
File "C:\GNUstep-devel\1.0.11\doc\msys\COPYING"
...
SetOutPath "$INSTDIR\etc"
File "C:\GNUstep-devel\1.0.11\etc\fstab.sample"
...
SetOutPath "$INSTDIR"
File "C:\GNUstep-devel\1.0.11\m.ico"
...
os.sep est un caractère pas une fonction
Salut,
A la base for line in f équivaut à lire f via realine.
line contiendra toujours la fin de ligne (\n) et endswith('/') retournera False.
Exemple de code un peu bourrin (qui marche):
Code:
1 2 3 4 5 6
| import sys, os
with open(sys.argv[1]) as f:
for line in f.read().splitlines():
if line.endswith(os.sep):
print '%s: is path' % line
else: print 'line: ', line |
- W
PS: Ah oui... os.sep = '/' sous Unix, '\' sous Windows.