英文:
Reading files and averaging the contents in Python
问题
我正在阅读三个不同的文件并打印输出。然而,我还想打印出这三个文件中每一行的平均值。我展示当前的输出和期望的输出。
当前的输出是
1
2
3
4
5
6
7
8
9
期望的输出是
4 #(1+4+7)/3
5 #(2+5+8)/3
6 #(3+6+9)/3
英文:
I am reading three different files and printing the output. However, I also want to print the average of each line from the three files. I present the current and expected outputs.
N = [1, 2, 3]
for i in N:
filepath = r"C:\Users\USER\OneDrive - Technion\Research_Technion\Python_PNM\Surfactant A-D\Trials\{}\len_J.py".format(i)
try:
with open(filepath, "r") as f:
content = f.read()
print(content)
except FileNotFoundError:
print("File not found:", filepath)
The current output is
1
2
3
4
5
6
7
8
9
The expected output is
4 #(1+4+7)/3
5 #(2+5+8)/3
6 #(3+6+9)/3
答案1
得分: 2
read()
返回一个字符串或字节。您当前正在获取一个字符串。您需要解析每行上的整数,将它们保存在一个列表或numpy数组中,然后可以调用 np.average
来获取您需要的值。
英文:
read()
returns either a string or bytes. You're currently getting a string. You need to parse the integers on each line, save them in a list or numpy array and then you can call np.average
to get the value you need.
答案2
得分: 1
NFILES = 3
values = [[] for _ in range(NFILES)]
for i in range(NFILES):
with open(f'/Volumes/G-Drive/File{i+1}.txt') as data:
values[i] += map(int, filter(lambda x: x.strip().isdecimal(), data))
for t in zip(*values):
print(sum(t)//len(t))
英文:
You have 3 files. Each file has a number of lines. Each line contains a single integer value
Therefore (using different file paths):
NFILES = 3
values = [[] for _ in range(NFILES)]
for i in range(NFILES):
with open(f'/Volumes/G-Drive/File{i+1}.txt') as data:
values[i] += map(int, filter(lambda x: x.strip().isdecimal(), data))
for t in zip(*values):
print(sum(t)//len(t))
Output:
4
5
6
Note:
If any lines in any of the files contains something that cannot be converted to int then such lines will be ignored
答案3
得分: 0
这是一些用于此目的的示例代码:
contents = "1\n2\n3"
num_array = contents.split("\n")
total = 0
for number in num_array:
total += int(number)
print(total / len(num_array))
contents
是您从文件中读取的内容。如果文件中不是每一行都是一个数字,那么整数转换会引发异常。
另外,我假设文件中的数字是由换行符分隔的,如果不是的话,您将需要在分割语句中替换字符。
英文:
Here's some sample code for that:
contents = "1\n2\n3"
num_array = contents.split("\n")
total = 0
for number in num_array:
total += int(number)
print(total / len(num_array))
contents
is the content you read from your files. You'll have to watch out if not every line in the file is a number because then the integer conversion will throw an exception.
Also I assume that the numers in the file are separated by newlines, if now you'll have to replace the character in the split statement.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论