AttributeError: - 'list'对象没有属性'startswith'在Django视图中: -
def index(request):
value = []
path = os.path.join(BASE_DIR,'accessfiles/media/images/GSE2035_series_matrix.txt')
with open(path, 'r', encoding = "utf-8") as file:
file = csv.reader(file, delimiter='\t')
for line in file:
if line.startswith("!Series_relation"):
value = line[1]
args = {'file':value}
return render(request, 'index.html', args)
答案 0 :(得分:2)
为字符串对象定义了startswith()方法。在这种情况下,您可以在行变量上调用它,这是一个列表对象(如错误所示)。
当读取csv文件时,它会将每一行拆分为一个值列表,在这种情况下是由原始文件中的制表符分隔的值。
如果你想确保该行以例如“start”开头,你应该写:
line[0].startswith("start")
因为行列表的第一个元素是字符串。
答案 1 :(得分:0)
csv.reader
返回一个包含列表的迭代器,每个列表代表由提供的分隔符拆分的文件中的一行(可以从您收到的错误中推断出来)。
尝试在print(line)
声明之前添加if
。
要使代码生效,您需要将if line.startswith(...)
修改为if line[0].startswith(...)
。