gpt4 book ai didi

python - Windows 到 Linux 脚本问题 : "IndexError: list index out of range"

转载 作者:太空宇宙 更新时间:2023-11-04 04:37:21 24 4
gpt4 key购买 nike

我有一个脚本 - 在 Windows 中完美运行,但是当我尝试在 Ubuntu 中运行它时,它抛出错误消息:

IndexError: list index out of range.

这是一个非常简单的脚本:它导入 CSV 文件,读取行,将每行中的第一项打印到列表中,使用 set() 删除重复项,然后将此新列表写入文件。

import csv, glob

for x in glob.glob("*raw_vcf.csv"):
csv_f = open(x, "r")

data = [c for c in csv.reader(csv_f)]
frags_unique = []

def frag_list(vcf_data, uniquefrags):
"""
User input: an imported .vcf file (='vcf_import'); an empty list
(= 'uniquefrags').
'frag_list' takes 'vcf_import', reads each row/list, taking the first item
and attaching only unique values to 'uniquefrags', using the set() function.
First row (header row) in 'vcf_data' is deleted; not needed.
"""
del vcf_data[0]
list_1 = []
for row in vcf_data:
list_1.append(row[0])
for item in list(set(list_1)):
uniquefrags.append(item)

frag_list(data, frags_unique)

out = open("output_unique_frags.txt","w")
for frags in frags_unique:
out.write(frags+"\n")
out.close()

具体来说,错误发生在模块中:

Traceback (most recent call last):
File "PRIME_unique_frags.py", line 50, in <module>
frag_list(data, frags_unique)
File "PRIME_unique_frags.py", line 46, in frag_list
list_1.append(row[0])
IndexError: list index out of range

但老实说,我看不出它有什么问题,因为它可以在我的 Windows 操作系统上运行;尝试用不同的方式重写它,但没有成功。

一些示例输入数据(“*_raw_vcf.csv”):

A,B,C,D,E
1,2,3,4,5
1,5,4,3,2
2,3,4,5,6
2,3,4,7,8
3,4,5,6,7

理论上(Windows 中确实如此)应该生成一个文件(“output_unique_frags.txt”;A 列中的唯一值):

1
2
3

最佳答案

回溯表明 row 没有元素[0],因此它是一个空列表。这表明在 Ubuntu 系统上,读取器为每行返回一个空列表。

看看 csv docs ;您可以在设置阅读器时指定方言。我想说 Ubuntu 系统上的读者正在寻找与文件中的分隔符不同的分隔符。

顺便说一句:上面代码的缩进是否正确?如果是这样的话,就会发生一些奇怪的事情,例如:

for x in glob.glob("*raw_vcf.csv"):
csv_f = open(x, "r")

如果有多个 .csv 文件,您只能获取最后一个。

关于python - Windows 到 Linux 脚本问题 : "IndexError: list index out of range",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30318697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com