Чтение нескольких номеров из текстового файла

Я новичок в программировании на python и нуждаюсь в помощи в этом.

У меня есть текстовый файл с несколькими номерами вроде этого:

12 35 21
123 12 15
12 18 89

Мне нужно уметь читать отдельные числа каждой строки, чтобы иметь возможность использовать их в математических формулах.

Ответ 1

В python вы читаете строку из файла в виде строки. Затем вы можете работать со строкой, чтобы получить нужные вам данные:

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

Я сделал все это несколькими путями, но вы часто увидите, как люди объединяют их:

with open('datafile') as f:
    for line in f:
        numbers_float = map(float, line.split())
        #work with numbers_float here

Наконец, использование их в математической формуле тоже легко. Сначала создайте функцию:

def function(x,y,z):
    return x+y+z

Теперь итерация через ваш файл вызывает функцию:

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)

Ответ 2

Другой способ сделать это - использовать функцию numpy, называемую loadtxt.

import numpy as np

data = np.loadtxt("datafile")
first_row = data[:,0]
second_row = data[:,1]

Ответ 3

Это должно работать, если вы назовете свой файл 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")

это должно возвратить [12, 35, 21, 123, 12, 15, 12, 18, 89] после того, как вы сможете индивидуально выбирать все числа с помощью list_variable [intergrer]

Ответ 4

Следующий код должен работать

f = open('somefile.txt','r')
arrayList = []
for line in f.readlines():
    arrayList.extend(line.split())
f.close()

Ответ 5

Если вы хотите использовать имя файла в качестве аргумента в командной строке, вы можете сделать следующее:

    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

в противном случае вы можете сделать это:

    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