python排序函数在windows上似乎不起作用
我使用Python3对csv文件进行排序,代码如下。它在MAC电脑上运行得很好,但在Windows(real或Fusion)上我得到了这个例外。有人看到这个或有什么建议吗python排序函数在windows上似乎不起作用,python,sorting,Python,Sorting,我使用Python3对csv文件进行排序,代码如下。它在MAC电脑上运行得很好,但在Windows(real或Fusion)上我得到了这个例外。有人看到这个或有什么建议吗 Exception in Tkinter callback Traceback (most recent call last): File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__ return self.func(*args) File
Exception in Tkinter callback Traceback (most recent call last):
File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__
return self.func(*args)
File "Z:\bin\FDTSEfiles\HrsWonVal.py", line 470, in <lambda>
Button(newOrExisting, text="OK", command=lambda: getnewOrExisting_File(U_cmd.get())).grid(row=5, column=1)
File "Z:\bin\FDTSEfiles\HrsWonVal.py", line 466, in getnewOrExisting_File
reverseOrderAndFilterFile(existingFilePath)
File "Z:\bin\FDTSEfiles\HrsWonVal.py", line 510, in reverseOrderAndFilterFile
sortedlist = sorted(data, key=operator.itemgetter(3))
# 3 specifies the 4th column - Date IndexError: list index out of range
sorted
在任何平台上都可以正常工作。回溯会准确地告诉您错误发生的位置,很明显,这与您的数据不是您认为应该是的数据(或不是csv模块解释为的数据)有关-分隔符错误或源文件的列数少于四列 sorted
在任何平台上都可以正常工作。回溯会准确地告诉您错误发生的位置,很明显,这与您的数据不是您认为应该是的数据(或不是csv模块解释为的数据)有关-分隔符错误或源文件的列数少于四列 sorted
在任何平台上都可以正常工作。回溯会准确地告诉您错误发生的位置,很明显,这与您的数据不是您认为应该是的数据(或不是csv模块解释为的数据)有关-分隔符错误或源文件的列数少于四列 sorted
在任何平台上都可以正常工作。回溯会准确地告诉您错误发生的位置,很明显,这与您的数据不是您认为应该是的数据(或不是csv模块解释为的数据)有关-分隔符错误或源文件的列数少于四列 csv模块中的脚注:
如果未指定newline='
,则嵌入换行符
内部带引号的字段将无法正确解释,请继续
将添加在写入额外\r
时使用\r\n
行标记的平台。
由于csv模块
执行自己的(通用)换行处理
Windows恰好是一个(…该)平台,它使用
\r\n
作为行尾。这就是为什么您会获得特定于平台的行为;通过在csv
模块中指定newline='
到open
脚注来消除它:
如果未指定newline='
,则嵌入换行符
内部带引号的字段将无法正确解释,请继续
将添加在写入额外\r
时使用\r\n
行标记的平台。
由于csv模块
执行自己的(通用)换行处理
Windows恰好是一个(…该)平台,它使用
\r\n
作为行尾。这就是为什么您会获得特定于平台的行为;通过在csv
模块中指定newline='
到open
脚注来消除它:
如果未指定newline='
,则嵌入换行符
内部带引号的字段将无法正确解释,请继续
将添加在写入额外\r
时使用\r\n
行标记的平台。
由于csv模块
执行自己的(通用)换行处理
Windows恰好是一个(…该)平台,它使用
\r\n
作为行尾。这就是为什么您会获得特定于平台的行为;通过在csv
模块中指定newline='
到open
脚注来消除它:
如果未指定newline='
,则嵌入换行符
内部带引号的字段将无法正确解释,请继续
将添加在写入额外\r
时使用\r\n
行标记的平台。
由于csv模块
执行自己的(通用)换行处理
Windows恰好是一个(…该)平台,它使用
\r\n
作为行尾。这就是为什么您会获得特定于平台的行为;通过指定newline='
到open
您的CSV看起来像什么来摆脱它?您似乎正在尝试访问一个不存在的列。将csv文件的newline='
传递到open()
。您的csv看起来像什么?您似乎正在尝试访问一个不存在的列。将csv文件的newline='
传递到open()
。您的csv看起来像什么?您似乎正在尝试访问一个不存在的列。将csv文件的newline='
传递到open()
。您的csv看起来像什么?您似乎试图访问一个不存在的列。请将csv文件的newline='
传递到open()
。谢谢您的建议。尝试使用换行符=“”但没有成功。data=csv.reader(打开(reverseAndFilteredPathFileName,换行符=“”),分隔符=‘,’,引号=‘’)。数据文件包含正确的列数。它在MAC上运行良好。然后使用您自己的键函数代替itemgetter来诊断获取索引器的原因。当您编写自己的键函数时,请打印出值,以便知道CSV文件中的哪一行导致了问题。如果是这样的话,您可能会有更好的想法s额外的换行符或列太少。最终发现了问题,正如您所说的-换行符=''只是花了我一段时间才找到有问题的打开项。谢谢!谢谢您的建议。尝试了换行符='',但没有成功。data=csv.reader(打开(reverseAndFilteredPathFileName,换行符=''),分隔符='',引号='')。数据文件包含正确数量的列。它可以在MAC上完美地工作。然后使用您自己的键函数代替itemgetter来诊断为什么会得到索引器。在编写自己的键函数时,请打印出值,以便知道CSV文件中的哪一行导致了问题。如果是额外的换行或列太少,这可能会给你一个更好的主意
data = csv.reader(open(reverseAndFilteredPathFileName),delimiter=',')
sortedlist = sorted(data, key=operator.itemgetter(3))
with open(reverseAndFilteredPathFileName, "w") as f:
fileWriter = csv.writer(f, delimiter=',')
for row in sortedlist:
fileWriter.writerow(row)
f.close()