Python在私PC上之怪现象

最近私在学Python,算是刚刚起步,水平不佳,不好意思写些什么。所以常上CSDN但多半都是潜水,并非犯懒,力不足尔。昨日终于注册了自己的CSDN帐号,可惜那里面“发展方向”里貌似没有单独的Python选项,于是选了个数据库相关。上面的学习笔记怎么办呢?大概可以拿这篇网志凑数。

以上属于胡扯,下面进入正题。Python……按说是跨平台的,用Java的宣传语就是“一次编写,到处运行”(当然原文用的是“编译”,Python有些不同,暂且不提),私也是看到这一点才毅然决定选它的。Unix/Unix-Like是本命平台,自然没问题。但我在Win里却遭遇了点麻烦,到今天简直可以说是抓狂的地步……难道真的也跟Java讽刺者说的似的:“一次编写,到处调试”?

首先是解释运行的问题,这里就有一怪现象(并且不写读取、写入类代码根本看不出来)。如果是双击.py脚本直接运行(这大概是官方想让用户使用的方法),程序就默认在本地编译运行,这也就意味着“当前目录”(即sys.argv的第一个目录)就是脚本所在的目录,此时如果执行没有指定目录的写入或读取命令就会在当前目录写入或从当前目录读取,这是没有问题的。可是如果在终端里键入脚本所在的位置来运行,它的默认目录就会莫名其妙地变为C:user(用户名)。于是乎问题来了,私在第一次运行的时候发现整个程序一点毛病没有,但就是找不到文件跑哪去了。后来在win下搜索才总算把它找到。(说来也怪,我在Win7下往C盘里拷个东西它都提示要我提升权限,在python下竟然神不知鬼不觉直接写进去了,说不定这是个漏洞)

路径不统一。有两个解决方案:

其一是手动指定一个特定路径,私认为此是下下策。首先,除了当前目录以外在任何目录创建文件都是一种不太绿色的行为(所以小朋友们记住,绿坝最不绿色)。其次,虽然Python有一个内建的mkdir函数,可是它只能创建“指定的那个”目录,换句话说如果那个目录的根目录不存在就直接报错。所以如果想创建一个藏匿比较深的目录的话就得逐层检验,存在的跳过,不存在的创建。怎么检验呢?私想到的办法是把每级目录写进一个list里,再写个循环逐个调用这list每个元素。不是不行,但是是个很让人痛苦的活。

方法二是以后干脆就直接运行,不再用终端。可是要是直接运行的话一旦代码执行完毕窗口就自动关闭,所以很多程序运行起来就会看到一个终端一闪而过消失无踪,再运行又一闪而过,再运行……所以私现在甭管啥程序都在最后来一行input()把它卡住好能看到屏幕的显示……

在IDLE(Python的默认IDE)里运行可以解决这两个问题,不过又引入一个更令人无语的悲剧——今天用的时候发现Shell根本打不开,每次按F5执行都程序无响应,只能强制关闭,修复重装都不管事,现在问题依然存在……

今天打开了久违的教材,学用pickle函数。写出来之后挺高兴地运行,结果提示“’module’没有’dump’这个属性”(原话是英文,记不住了)。嗯,没关系,第一次写难免出错,于是检查一遍,似乎没问题。再查一遍,还是没问题。私有点怀疑是更新版本之后函数变了,于是上官网查documentation(相当晦涩的文档),发现用法完全相同。最后一怒之下把教材里的例子直接复制进去,结果PC不依不饶还是这句,私就彻底愤怒了,看到这行字的一瞬间就把鼠标当惊堂木狂拍……

由于PC通常是不会出错的,于是休息过后私打算新建个文件重写一遍,结果居然解释通过。找不到病根,私就又把教材的实例复制进去,又通过了……此时私彻底无奈。