68 votes

Comment lire les nombres d'un fichier en Python ?

J'aimerais lire les nombres du fichier dans un tableau à deux dimensions.

Contenu du fichier :

  • ligne contenant w, h
  • h lignes contenant w entiers séparés par un espace

Par exemple:

 4 3
1 2 3 4
2 3 4 5
6 7 8 9

102voto

zeekay Points 22640

En supposant que vous n'ayez pas d'espaces superflus :

 with open('file') as f:
    w, h = [int(x) for x in next(f).split()] # read first line
    array = []
    for line in f: # read rest of lines
        array.append([int(x) for x in line.split()])

Vous pouvez condenser la dernière boucle for en une compréhension de liste imbriquée :

 with open('file') as f:
    w, h = [int(x) for x in next(f).split()]
    array = [[int(x) for x in line.split()] for line in f]

6voto

Artsiom Rudzenka Points 9771

Je ne sais pas pourquoi avez-vous besoin de w, h. Si ces valeurs sont réellement requises et signifient que seul le nombre spécifié de lignes et de colonnes doit être lu, vous pouvez essayer ce qui suit :

 output = []
with open(r'c:\file.txt', 'r') as f:
    w, h  = map(int, f.readline().split())
    tmp = []
    for i, line in enumerate(f):
        if i == h:
            break
        tmp.append(map(int, line.split()[:w]))
    output.append(tmp)

1voto

Stale Noobs Points 110

Pour simplifier la réponse, voici un programme qui lit les entiers du fichier et les trie

 f = open("input.txt", 'r')

nums = f.readlines()
nums = [int(i) for i in nums]

Après avoir lu chaque ligne du fichier, converti chaque chaîne en un chiffre

 nums.sort()

Trier les nombres

 f.close()

f = open("input.txt", 'w')
for num in nums:
    f.write("%d\n" %num)

f.close()

Les réécrire Aussi simple que cela, j'espère que cela vous aidera

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X