pythonがwindowsの下でファイルIOErrorを作成した理由の1つ
1532 ワード
今日pythonプログラムをテストするときは、本の例に従ってテストします.win 7では常にIOErrorの異常が報告され、開発ツールはeclipse+pydevです.
例は次のとおりです.
報告された異常は以下の通りである.
なぜか分からない.ネットで検索してみると、ネット上の答えは以下の通りです.
【解答】パスは文字列で、中にはtが含まれていて、エスケープ記号なので、ファイルパスに問題があります.winの下のパス区切り記号は反スラッシュでこの問題を引き起こした.あなたはこのようにf=open(r'F:Dropboxpythontest.txt','r')に変更しました.文字列の前にrを付け、raw文字列として宣言すると、その中のエスケープは処理されません.
コードのfnameを変更します
fnameを次のように変更します.
またpythonはゲート解釈型言語であり,作成したコードは必ず手当たり次第に保存して実行しなければならない.さもないと運行結果が間違って、この習慣は何度も出会った.
例は次のとおりです.
'''
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 "
Enter lines ( by itslf to quit).
"
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:Dropboxpythontest.txt','r')に変更しました.文字列の前にrを付け、raw文字列として宣言すると、その中のエスケープは処理されません.
コードのfnameを変更します
fnameを次のように変更します.
fname=r"d:\test.txt"
この時点でコンソールはエラーを報告せず、実行は通過した.またpythonはゲート解釈型言語であり,作成したコードは必ず手当たり次第に保存して実行しなければならない.さもないと運行結果が間違って、この習慣は何度も出会った.