我试图让我的游戏项目不像 1995 年那样保存在自己的目录中。
标准库不合作。
基本上,我试图在 %appdata%\MYGAMENAME\ 中保存(这是 win32 上 _savedir 的值。)如果这样的文件夹不存在,那么我使用 os.path.exists() 来检查它是否确实存在,如果不存在则创建它。
问题是,os.path.exists() 返回 True,但我可以查看文件夹并确认它没有。如果我在 REPL 中尝试它也不会返回 True;只有在这里(我已经用我的调试器确认它确实如此)。
酸洗步骤似乎正常进行;它会立即跳转到 else: 子句。但我可以通过 OS 文件系统浏览器和 REPL 确认文件夹和文件都不存在!
这里是完整的函数源码(别笑!):
def save(self):
"Save the game."
#Eh, ____ it, just pickle gamestate. What could go wrong?
save_path=os.path.join(_savedir,"save.sav")
temporary_save_path=os.path.join(_savedir,"new_save.sav")
#Basically, we save to a temporary save, then if we succeed we copy it over the old one.
#If anything goes wrong, we just give up and the old save is untouched. Either way we delete the temp save.
if not os.path.exists(_savedir):
print("Creating",_savedir)
os.makedirs(_savedir)
else:
print(_savedir,"exists!")
try:
pickle.dump(self,open(temporary_save_path,"wb"),protocol=pickle.HIGHEST_PROTOCOL)
except Exception as e:
print("Save failed: {0}".format(e))
print("The game can continue, and your previous save is still intact.")
else:
shutil.move(temporary_save_path,save_path)
finally:
try:
os.remove(temporary_save_path)
except Exception:
pass
(是的,捕获 Exception 通常是不可取的,但我希望在出现任何问题时优雅地失败,不会出现真正的异常,我想做任何事情否则。)
这可能是什么问题?
最佳答案
Python 不会扩展 %appdata% 的值。相反,会创建一个相对于当前工作目录的文字目录。运行 print(os.path.abspath(_savedir)),这是文件创建和存在的地方。
使用 os.environ['APPDATA'] 创建应用程序数据目录的绝对路径:
_savedir = os.path.join(os.environ['APPDATA'], 'MYGAMENAME')
关于python - os.path.exists() 在 Windows 上的 %appdata% 中给出误报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31617936/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我想将我的MacSnowLeopardruby从1.8.7升级到1.9.1版本,有人知道轻松且最好的升级方法吗?因为我读了一些论坛/帖子/博客/讨论说覆盖苹果发布的ruby不好将Rails从版本2.2.2升级到2.3.8的最佳方法是什么?因为我找到的所有信息都仅适用于豹/老虎,而且很少有关于雪豹的复杂文章。他们还说覆盖apple提供的rails不好吗。谁能帮帮我?谢谢。 最佳答案 DanBenjamin有一些greatinstructionsforcompilingandinstallingRuby,RubyGemsandRai
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o