今天在测试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编写文件操作程序时遇到的IOError异常,并详细解释了解决该问题的过程。异常的原因在于Windows路径中包含转义字符,通过使用原始字符串解决了此问题。
1309

被折叠的 条评论
为什么被折叠?



