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

来源:互联网 发布:马拉多纳 数据 编辑:程序博客网 时间:2024/04/30 07:13

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

例子如下:

'''Created on 2013-3-31@author: kazeik'''import os    if __name__ == '__main__':    passls = os.linesepprint type(ls)print lsfname="d:\test.txt"all = []while True:    if os.path.exists(fname):        print "error"    else:        breakprint "\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是门解释型语言,所编写的代码一定要随手保存再运行。不然运行结果会不对,这个习惯我遇上好多次了;

原创粉丝点击