在python中打开和读取文件

时间:2018-05-07 10:34:44

标签: python split scope text-files indentation

我在打开和阅读写python的文件时遇到了麻烦。我应该从.txt文件中读取值以便找到最大值,最小值等。当我在代码中创建和数组时,例如“values = [1,5,77]”,它可以正常工作。但是当我尝试打开.txt文件时,我的.py文件位于同一个地图中,我收到错误。有人帮帮我!

from statistics import median

max_value = None
min_value = None
avg_value = None
med_value = None

#values = [10, 0, 50, 99, -200, 1313, 7]

#with open("varden.txt") as values:
#   for line in values:
#       print (line)

#values = open("varden.txt", "r")
#   file = values.readlines().split()

with open('varden.txt') as f:
   values = f.readlines().split()

#       max_value = values[0]
            for number in values:
                if number>max_value:
                    max_value = number

#       min_value = values[0]
            for number in values:
                if number<min_value:
                    min_value = number


avg_value = sum(values)/len(values)
med_value = median(values)

values.close()

print ("Maximum value is: ", max_value)
print ("Minimum value is: ", min_value)
print ("Avarage value is: ", avg_value)
print ("Median value is: ", med_value)

Screenshot of code

错误:

  File "laboration1del2.py", line 21
  for number in values:
                      ^
  TabError: inconsistent use of tabs and spaces in indentation

2 个答案:

答案 0 :(得分:2)

  

文件“laboration1del2.py”,第21行表示值中的数字:^ TabError:缩进中标签和空格的使用不一致

^如果这是你的错误,那么很可能是指你的循环似乎缩进太多了。 Python依赖于格式化,代替大括号,解释代码和定义范围。

使用您发布的代码,看起来您的循环有太多的缩进,并且您的变量似乎有3个空格缩进它,这看起来很奇怪。我看到标签通常表示为4个空格或2个空格,但从不表示3。

请尝试以下代码:

with open('varden.txt') as f:
    values = f.readlines().split()

    for number in values:
        if number>max_value:
            max_value = number


    for number in values:
        if number<min_value:
            min_value = number

编辑:您还在中使用open()块声明。因此,我认为您不会像现在这样访问它。当这给你带来麻烦时,你也会想要缩进这些行。所以他们在的范围内,你可以用open()

avg_value = sum(values)/len(values)
med_value = median(values)

values.close()

答案 1 :(得分:0)

我在行values = f.readlines().split()中可以看到readlines()的一个问题会返回一个列表,您正在将split()应用于不可能的列表。

尝试以下一次,
values = f.readlines()[0].split('=')[1].strip() // [1, 2, 3, 4, 5, 6]