【发布时间】: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