이 문서의 예에서는 Python 예외 및 파일 처리 메커니즘을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
1 예외 처리
Python에서의 예외 사용
시도해 보세요
제외
드디어
그리고 Except 뒤에 else 가 올 수도 있습니다.
예외를 발생시키려면 raise를 사용하세요
발생한 예외가 처리되지 않으면 Python IDE에 빨간색 정보가 표시됩니다. 이로 인해 프로그램이 종료됩니다.
이전에 몇 가지 이상 현상을 목격했습니다.사용된 키가 사전에 없으면 KeyError 예외가 발생합니다. 예:
>>> d = {"a":1, "b":"abc"} >>> d["c"] Traceback (most recent call last): File "<interactive input>", line 1, in <module> KeyError: 'c'
>>> li = [1,2] >>> li.index(3) Traceback (most recent call last): File "<interactive input>", line 1, in <module> ValueError: list.index(x): x not in list
>>> li[2] Traceback (most recent call last): File "<interactive input>", line 1, in <module> IndexError: list index out of range
존재하지 않는 변수를 참조하면 NameError 예외가 발생합니다.
강제 없이 데이터 유형을 혼합하면 TypeError 예외가 발생합니다.
파일 작업 오류로 인해 발생한 IOError:
try: fsock = open("/notthere") except IOError: print "The file dose not exits..." else: print "open the file." print "this line will always print"
open은 파일을 여는 데 사용되는 내장 함수입니다.
try Except 뒤에 else 문이 올 수 있습니다. 지정된 예외가 catch되지 않으면 else 문이 실행됩니다.
모듈을 가져올 때 모듈이 없으면 ImportError 예외가 발생합니다.
자신만의 예외 클래스를 정의할 수도 있습니다. 그런 다음 예외를 발생시켜야 할 때 raise를 사용하세요.
2 파일 개체 작업앞서 언급했듯이 open은 파일을 열고 파일 객체를 반환하는 데 사용할 수 있습니다.
open(name[, mode[, buffering]])
>>> f = open("/music/_singles/kairo.mp3", "rb")
열 수 없는 경우 open은 IOError 예외를 발생시킵니다.
이제 이름 속성과 모드 속성을 사용하여 파일 개체를 쿼리할 수 있습니다. 예:
>>> f.name '/music/_singles/kairo.mp3' >>> f.mode 'rb'
>>> f.tell()
0 >>> f.seek(0, 2)
찾은 주소가 잘못된 경우(예: 범위 초과) IOError 예외가 발생합니다.
따라서 이 명령문은 파일 포인터를 파일 끝으로 이동합니다.
>>> f.tell()
>>> f.seek(-128, 2) >>> data = f.read(128)
read 매개변수는 읽을 최대 바이트 수를 나타냅니다. 이 매개변수는 파일 끝까지 읽는다는 의미도 있습니다.
읽는 동안 오류가 발생하면(예: 디스크의 불량 섹터 또는 네트워크 연결 끊김) IOError 예외가 발생합니다.
>>> f.closed
False >>> f.close()
>>> f.closed True
>>> f1 = open('test.log', 'w')
>>> f1.write('abc') >>> f1.close() >>> file('test.log').read()
'abc'
3 for 루프Python에서는 목록을 순회하는 데 사용됩니다. 예:
>>> li = [1, 2, 3] >>> for i in li:
... i 인쇄
...
1
2
3
이 출력은 print "n".joni(li)와 동일합니다.
>>> for i in range(len(li)) : print li[i] ... 1 2 3
>>> d = {1:"abc", 2:"def"} >>> for k, v in d.items() : print "%d = %s" % (k, v) ... 1 = abc 2 = def
Python에서 모듈은 sys 모듈에 정의된 전역 사전 객체입니다.
모듈을 가져오면 sys.modules에서 찾을 수 있습니다.
각 클래스에는 내장된 "클래스 속성"( __module__ )이 있습니다. 해당 값은 클래스를 정의하는 모듈의 이름입니다.
5 디렉토리 작업os.path가 참조하는 모듈에는 파일과 디렉터리를 운영하기 위한 여러 기능이 있습니다. 예:
这个join函数用来将一个或多个字符串构造成一个路径名.
'c:\music\mahadeva.mp3' >>> os.path.expanduser("~")
expanduser函数用'~'作参数时. 返回当前用户根目录.
'c:\Documents and Settings\mpilgrim\My Documents'
>>> (filepath, filename) = os.path.split("c:\music\a.mp3")
split函数用来将一个路径名分成目录名和文件名. 它返回的是一个tuple. 用返回的tuple对(filepath, filename)赋值.
>>> filepath 'c:\music' >>> filename 'a.mp3' >>> (a, b) = os.path.splitext("a.mp3")
类似的. 这个splitext用来将一个全文件名分成 文件名 和 扩展名 两部分.
>>> a 'a' >>> b '.mp3'
列出目录用:
>>> os.listdir("c:\")
这个函数将返回一个字符串list. 包括所有的文件和文件夹的名字.
['boot.ini', 'CONFIG.SYS', 'AUTOEXEC.BAT', 'java', 等]
要判断一个字符串路径到底是一个文件还是一个文件夹. 用os.path模块中的 isfile() 或 isdir(). 如:
>>> [f for f in os.listdir("c:") if os.path.isdir(os.path.join("c:", f))]
这样就打印出c中所有文件夹名构成的list.
如果要在目录操作中使用通配符. 可以如下:
>>> import glob
要先导入 glob 模块
>>> glob.glob('c:\music\*.mp3')
则返回的list中包含了该目录下所有的 .mp3 后缀的文件名.
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。