我有一个从腌制文件中导入数据的应用程序。它在Windows中可以正常工作,但Mac和Linux的行为很奇怪。
在OS X中,除非将文件类型设置为。,否则腌制的文件(文件扩展名“
.char”)不可用。然后,如果我选择一个扩展名为.char的文件,它将无法加载,并显示错误消息
unpickle_file = cPickle.load(char_file)
ValueError:无法将字符串转换为浮点型
但是,如果我创建的文件没有.char扩展名,则该文件将正常加载。
在Linux中,当我使用“文件打开”对话框时,无论它们是否具有文件扩展名,我的腌制文件都不可见。但是,我可以在Nautilus或Dolphin下看到它们。但是,它们根本不存在于我的应用程序中。
编辑 这是保存代码:
def createSaveFile(self):
"""Create the data files to be saved and save them.
Creates a tuple comprised of a dictionary of general character information
and the character's skills dictionary."""
if self.file_name:
self.save_data = ({'Name':self.charAttribs.name,
<snip>
self.charAttribs.char_skills_dict)
self.file = open(self.file_name, 'w')
cPickle.dump(self.save_data, self.file)
self.file.close()
这是开放代码:
def getCharFile(self, event): # wxGlade: CharSheet.<event_handler>
"""Retrieve pickled character file from disk."""
wildcard = "Character files (*.char) | *.char | All files (*.*) | *.*"
openDialog = wx.FileDialog(None, "Choose a character file", os.getcwd(),
"", wildcard, wx.OPEN | wx.CHANGE_DIR)
if openDialog.ShowModal() == wx.ID_OK:
self.path = openDialog.GetPath()
try:
char_file = open(self.path, "r")
unpickle_file = cPickle.load(char_file)
char_data, char_skills = unpickle_file
self.displayCharacter(char_data, char_skills)
except IOError:
self.importError = wx.MessageDialog(self,
"The character file is not available!",
"Character Import Error", wx.OK | wx.ICON_ERROR)
self.importError.ShowModal()
self.importError.Destroy()
openDialog.Destroy()
写入和/或读取腌制的数据时,可能没有以二进制模式打开文件。在这种情况下,将进行换行格式转换,这可能会破坏二进制数据。
要以二进制模式打开文件,您必须在模式字符串中提供“ b”:
char_file = open('pickle.char', 'rb')
问题内容: 我有一个defaultdict看起来像这样: 问题是,我不能使用cPickle腌制它。我在这里找到的解决方案之一是使用模块级函数而不是lambda。我的问题是,什么是模块级功能?如何在cPickle中使用字典? 问题答案: 除了Martijn的解释之外: 模块级函数是在模块级定义的函数,这意味着它不是类的实例方法,它不嵌套在另一个函数中,并且它是带有名称的“真实”函数,而不是lambd
我最近在我的Mac上下载了JDK7U25(我运行的是OSX10.7.5)用于我的java developers类。在http://www.Oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html从Oracle下载了.dmg文件并成功安装了软件包之后,我尝试在Library>Java>JavaVirtualMac
问题内容: 让我们看看Linux()中的功能: 让我们看看Mac()中的功能: 如您所见,这些声明彼此不同(参数顺序)。这真是令人惊讶!在某个地方抱怨解决这个问题是否有效? 问题答案: 在某个地方抱怨解决这个问题是否有效? las,不。这种方式已经存在了很长时间,并且有太多的代码依赖于此。 我认为根本的问题是“ 为什么会发生这些不兼容 ”?我会回答。它似乎可以归结为BSD首先实现它,但界面较差。I
我正在mac上学习使用chrome的selenium。 我已经设法用以下代码加载谷歌主页。 基于此,我尝试用selenium加载一个本地html文件。 Chrome以奇怪的字符串启动。 得到了这个错误。 回溯(最近一次调用last):文件“/Users/pan/selenium.py”,第11行,在驱动程序中。get(dir_path“/game/dino.html”)File“/Users/pa
问题内容: 我在Mac上工作,正在尝试指定桌面上文件的路径。 我只是这样做: 当我尝试运行它时,我得到了FileNotFoundException。 如何正确指定路径? 问题答案: Mac OS X的文件系统区分大小写。并应以大写字母开头,并且文件名也应区分大小写。 由于您要查找的是桌面文件夹,而不是名称为的用户的根文件夹,因此需要在该文件夹后添加用户名。例如:
下面链接的文档似乎表明可以对顶级类及其实例进行pickle处理。但根据我对前一个问题的回答来看,这似乎不正确。在我发布的脚本中,pickle接受类对象并写入文件,但这没有用。 这是我的问题:这个文档是错误的,还是有更微妙的东西我不明白?另外,在这种情况下,泡菜是否应该生成某种错误消息? https://docs . python . org/2/library/pickle . html # wh