python 在windows下创建文件IOError的一个原因

今天在测试python程序时,按照书本上的例子来测试。在win7下始终会报一个IOError的异常,所用的开发工具为eclipse+pydev。

例子如下:

'''
Created on 2013-3-31

@author: kazeik
'''
import os

    
if __name__ == '__main__':
    pass
ls = os.linesep

print type(ls)
print ls


fname="d:\test.txt"
all = []

while True:
    if os.path.exists(fname):
        print "error"
    else:
        break

print "\nEnter lines ( by itslf to quit).\n"

while True:
    entry=raw_input("> ")
    if entry==".":
        break
    else:
        all.append(entry)
        
fobj = open(fname,"w")
fobj.writelines(['%s%s' % (x,ls) for x in all])
fobj.close()
print "DONE"

所报的异常如下:

Traceback (most recent call last):
  File "D:\USER\j2ee\workspace\P_test\src\MakeTextFile.py", line 35, in <module>
    fobj = open(fname,"w")
IOError: [Errno 22] invalid mode ('w') or filename: 'd:\test.txt'

不解其原因为何。在网上搜索了一下,网上的解答如下:

【解答】
路径是字符串,里面包含了个\t,是个转义符号,所以文件路径有问题。win下路径分隔符用的是反斜杠导致了这个问题。
你改成这样 f = open(r'F:\Dropbox\python\test.txt', 'r') 。在字符串前加r,声明为raw字符串,这样就不会处理其中的转义了。


于是修改代码中的fname

将fname改成如下:

fname=r"d:\test.txt"
这时控制台不再报错,运行通过;
另外,python是门解释型语言,所编写的代码一定要随手保存再运行。不然运行结果会不对,这个习惯我遇上好多次了;

你可能感兴趣的:(python 在windows下创建文件IOError的一个原因)