【问题标题】:List Index Working On macOS but not Windows?列表索引适用于 macOS 但不适用于 Windows?
【发布时间】:2020-08-07 08:13:57
【问题描述】:

所以,我在 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 使用脚本生成一个文件,该脚本就会再次运行。

【问题讨论】:

  • 这可能是因为 windows 和 macOS 有不同的换行符,你可以在这里查看解释softwareengineering.stackexchange.com/questions/29075/…
  • 我想逐行(你不应该用我认为的那样命名它们)是罪魁祸首。 Windows 使用 CR LF 作为换行符,而 mac 仅使用 LF。所以你的数组可能填充了不同的,因此错误。之后你用不同的行结尾写它,因此你不能再在 mac 上阅读它
  • @Joker 我在存储信息时使用了 .splitlines()。这就是问题,对吧?
  • 很多很酷的东西在 Windows 上不起作用。

标签: python python-3.x windows macos indexing


【解决方案1】:

好的,我找到了问题。

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

我用这段代码修复了它。

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

它过滤空行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-23
    • 2020-06-26
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 2012-02-08
    相关资源
    最近更新 更多