python launcher for whindows编码不正常无法运行


我在windows下写的python脚本,用右键->打开方式->python launcher for whindows(console),出现命令行窗口一闪而过,程序不运行。代码如下,名为test.py, 如果程序成功运行的话,会产生一个f.txt文件 ,但是实际上并没有产生。


 f=open('f.txt','w') 
for i in range(0,10):
    f.write(str(i)+'\n')
f.close()
print("hi")
x=input()

同时我尝试了在cmd中输入py -3 test.py 可以成功运行并产生f.txt文件。

环境win8.1 x64, python 3.4.3 32bit。(本机同时装有python 2.7.10 32bit)

谢谢。


更新:已经确定和编码问题有关···


更行:我知道怎么回事了···我犯了两个错误我会在下面自己的回答中说清楚。

python windows

被封印的ID 10 years, 5 months ago

好吧,我是题主,问题我已经解决了···很简单的问题···

首先说一下,我一开始遇到问题的脚本是我写的一个和本地文件读写无关的脚本,问题中的test.py脚本则是我为了debug写的。

题目中已经说了,我电脑中装了两个版本的python,所以一开始出问题的时候我也考虑是不是python版本的问题,于是我看了一下py.exe
图片描述

很好,于是我就没再考虑python版本的问题···

后来···我蛋疼的开始用process monitor(ms sysinternals中的)看看到底怎么回事···

然后发现 - - - - - - - - - - - - - - - - - - - -_-

文件操作很多都是在python27中

我擦···

然后我打开py.exe看了一下···

图片描述

我的内心是崩溃的···

于是我看了看PEP 397 -- Python launcher for Windows https://www.python.org/dev/peps/pep-0397/

在Python Version Qualifiers 部分看到了这句话

If no version qualifiers are found in a command, the environment
variable
PY_PYTHON can be set to specify the default version qualifier - the default
value is "2". Note this value could specify just a major version (e.g. "2") or
a major.minor qualifier (e.g. "2.6"), or even major.minor-32.

如果我没理解错,不加参数的情况下默认给我选择了python2···(如果我理解错了请务必告诉我多谢)
于是乎···

于是乎,到这里,我在我原来写的脚本中第一行添加了一句


 #! python3

于是我原来写的脚本就能用了···

但是!!!!!!
我问题中的test.py依然不能用···
于是我终于想起了try except···
于是


 [Errno 13] Permission denied: 'f.txt'

于是我终于想起用os.getcwd()看看工作目录


 C:\Windows\system32

QAQ
+++++++++++++++++++++++++++++++++++++
虽然我是小白,但是我能折腾···

puker answered 10 years, 5 months ago

Your Answer