在wxpython应用程序中,我使用以下代码检测csv文件的“方言”:pathname = dlg.GetPath()
try:
self.file = open(pathname, 'r', encoding='utf-8')
except IOError:
wx.LogError("Cannot open file '%s'." % ntpath.basename(self.file.name))
return
# check for file format with sniffer
sample = self.file.read(1024)
try:
dialect = csv.Sniffer().sniff(sample)
except UnicodeDecodeError:
wx.LogError("Cannot decode file '%s'." % ntpath.basename(self.file.name))
return
except csv.Error:
wx.LogError("Cannot determine dialect of '%s'." % ntpath.basename(self.file.name))
return
我在上面使用的csv文件的第一行是:
^{pr2}$
分隔符应该是“;”和引号字符'”,我知道有很多逗号、分号和引号字符来迷惑嗅探器,但是在windows上用Python3.6运行这段代码时,它可以完美地工作。在Linux上运行它(同样是在Python3.6中)总是会引发csv.错误(也适用于其他具有相同分隔符和引号字符的csv文件)。我尝试过read(1024)、其他值和readline,但总是得到相同的结果。在
对这种不同的行为有什么解释吗?在