Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表索引在macOS上工作,但在Windows上不工作?_Python_Python 3.x_Windows_Macos_Indexing - Fatal编程技术网

Python 列表索引在macOS上工作,但在Windows上不工作?

Python 列表索引在macOS上工作,但在Windows上不工作?,python,python-3.x,windows,macos,indexing,Python,Python 3.x,Windows,Macos,Indexing,因此,我在macOS上制作了一个脚本,并与一些朋友一起分发 然而,我收到了很多使用Windows的朋友的抱怨,说脚本不适合他们 果不其然,我在一个分区上安装了Windows并运行了我的脚本,但它不起作用 每个人都犯了同样的错误 data[k+1][16] = 0 IndexError: list assignment index out of range 下面是失败代码部分的示例 df = pd.read_csv("passandpy.csv", usecols=[16], skipi

因此,我在macOS上制作了一个脚本,并与一些朋友一起分发

然而,我收到了很多使用Windows的朋友的抱怨,说脚本不适合他们

果不其然,我在一个分区上安装了Windows并运行了我的脚本,但它不起作用

每个人都犯了同样的错误

    data[k+1][16] = 0
IndexError: list assignment index out of range
下面是失败代码部分的示例

df = pd.read_csv("passandpy.csv", usecols=[16], skipinitialspace=True)
col16 = df['Failed Attempts'].tolist()
data = [line for line in csv.reader(open('passandpy.csv'))]
data[k+1][16] = 0
csv.writer(open('passandpy.csv', 'w')).writerows(data)
应该发生的是从csv文件中读取第16列,并将其转换为列表。然后,我制作另一个名为data的列表,并将csv中的所有行写入该列表。我编辑该列表中的一个值,然后将该列表保存回csv

还有一件事我应该提到的是,一旦这个脚本在Windows上运行,它将不再适用于macOS


一旦我删除了在Windows上创建的csv文件,并使用macOS脚本生成了一个csv文件,脚本就会再次工作。

好的,我发现了问题

在Windows上,它将额外的空行写入.csv文件。这导致列表索引停止工作

我用这段代码修复了它

data = []
lines = [line for line in csv.reader(open('passandpy.csv','r'))]
for line in lines:
    if line == []:
        continue

它过滤空白行。

可能发生,因为Windows和Mac OS有不同的新行定界符,您可以在这里查看解释,我想行行(您不应该把它们命名为我想的一样)是罪魁祸首。Windows使用CR LF作为换行符,而mac仅使用LF。所以你的数组可能是不同的填充,因此是错误的。之后,你写了不同的行尾,因此你不能再阅读它了mac@Joker我在存储信息时使用了.splitlines()。这就是问题所在,对吧?很多很酷的东西在Windows上不起作用。