Je suis nouveau dans la programmation en python et j'ai besoin d'aide pour le faire.
J'ai un fichier texte avec plusieurs numéros comme celui-ci:
12 35 21
123 12 15
12 18 89
Je dois être capable de lire les nombres individuels de chaque ligne pour pouvoir les utiliser dans des formules mathématiques.
En python, vous lisez une ligne à partir d'un fichier sous forme de chaîne. Vous pouvez ensuite utiliser la chaîne pour obtenir les données dont vous avez besoin:
with open("datafile") as f:
for line in f: #Line is a string
#split the string on whitespace, return a list of numbers
# (as strings)
numbers_str = line.split()
#convert numbers to floats
numbers_float = [float(x) for x in numbers_str] #map(float,numbers_str) works too
J'ai tout fait en plusieurs étapes, mais vous verrez souvent des gens les combiner:
with open('datafile') as f:
for line in f:
numbers_float = map(float, line.split())
#work with numbers_float here
Enfin, leur utilisation dans une formule mathématique est également facile. Tout d'abord, créez une fonction:
def function(x,y,z):
return x+y+z
Maintenant, parcourez votre fichier en appelant la fonction:
with open('datafile') as f:
for line in f:
numbers_float = map(float, line.split())
print function(numbers_float[0],numbers_float[1],numbers_float[2])
#shorthand: print function(*numbers_float)
Une autre façon de le faire consiste à utiliser la fonction numpy
appelée loadtxt
.
import numpy as np
data = np.loadtxt("datafile")
first_row = data[:,0]
second_row = data[:,1]
Si vous souhaitez utiliser le nom de fichier comme argument sur la ligne de commande, procédez comme suit:
from sys import argv
input_file = argv[1]
with open(input_file,"r") as input_data:
A= [map(int,num.split()) for num in input_data.readlines()]
print A #read out your imported data
sinon vous pouvez faire ceci:
from os.path import dirname
with open(dirname(__file__) + '/filename.txt') as input_data:
A= [map(int,num.split()) for num in input_data.readlines()]
print A
Cela devrait fonctionner si vous nommez votre fichier numbers.txt
def get_numbers_from_file(file_name):
file = open(file_name, "r")
strnumbers = file.read().split()
return map(int, strnumbers)
print get_numbers_from_file("numbers.txt")
cela doit retourner [12, 35, 21, 123, 12, 15, 12, 18, 89] après que vous puissiez choisir individuellement tous les nombres avec list_variable [intergrer]
Le code suivant devrait fonctionner
f = open('somefile.txt','r')
arrayList = []
for line in f.readlines():
arrayList.extend(line.split())
f.close()