我是 python 编程的新手,需要帮助。
我有一个包含多个数字的文本文件,如下所示:
12 35 21
123 12 15
12 18 89
我需要能够读取每行的各个数字才能在数学公式中使用它们。
我是 python 编程的新手,需要帮助。
我有一个包含多个数字的文本文件,如下所示:
12 35 21
123 12 15
12 18 89
我需要能够读取每行的各个数字才能在数学公式中使用它们。
在 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)
另一种方法是使用numpy
名为 的函数loadtxt
。
import numpy as np
data = np.loadtxt("datafile")
first_row = data[:,0]
second_row = data[:,1]
如果您将文件命名为 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] 单独选择每个数字之后
以下代码应该可以工作
f = open('somefile.txt','r')
arrayList = []
for line in f.readlines():
arrayList.extend(line.split())
f.close()
如果您想在命令行中使用文件名作为参数,则可以执行以下操作:
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