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

标签 python linux windows csv ubuntu

我有一个脚本 - 在 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/

相关文章:

c++ - 在 Ubuntu(Netbeans) 和 Windows(Visual Studio 2012) 中编译相同的 C++ 代码

python - 尝试发出整数信号时pyqt属性错误

python - 如何在 Metis for Python 中构建图表

MySQL - 大表的基本问题

linux - 无法在 Compute Engine 中创建文件夹 - CentOS 6 var/www/html/

python - 使用 linux 应用程序和/或 Python 在视频文件中查找 GOP 参数值

c++ - 如何用C++签署XML文档或验证XML文档签名?

使用安装项目安装时未显示 Windows 服务

python - 装饰函数如何在 flask /python 中工作? (app.route)

python - 自动化多个安装程序