이 문서의 예에서는 Python 예외 및 파일 처리 메커니즘을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
1 예외 처리
Python의 예외 사용
try
Exception
마침내
를 처리합니다. 그리고 Except 뒤에 else가 올 수도 있습니다.
예외를 발생시키려면 raise
를 사용하세요. 실제 Python 프로그램이 실행 중일 때 프로그램이 종료됩니다.
이전에 몇 가지 예외를 확인했습니다.
사전에서 사용된 키가 그렇지 않은 경우 존재하면 KeyError가 발생합니다. 예외입니다. 예:
>>> d = {"a":1, "b":"abc"} >>> d["c"] Traceback (most recent call last): File "<interactive input>", line 1, in <module> KeyError: 'c'
검색 목록에 없는 값은 ValueError 예외를 발생시킵니다. 🎜>
>>> 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
존재하지 않는 메서드를 호출하면 AttributeError 예외가 발생합니다. 존재하지 않는 변수를 참조합니다. 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"
try Except 뒤에 올 수 있습니다. else 문. 지정된 예외가 발견되지 않으면
2 파일 객체 작업
앞서 언급했듯이 open은 파일을 열고 파일 객체를 반환하는 데 사용할 수 있습니다.
open(name[, mode[, buffering]])
>>> f = open("/music/_singles/kairo.mp3", "rb")
>>> f.name '/music/_singles/kairo.mp3' >>> f.mode 'rb'
>>> f.tell()
0 >>> f.seek(0, 2)
>>> f.tell()
>>> f.seek(-128, 2) >>> data = f.read(128)
>>> f.closed
False >>> f.close()
>>> f.closed True
파일을 쓰는 방법은 읽기와 비슷합니다. 그러나 "쓰기"를 위해 파일을 열어야 합니다. 예:
>>> f1 = open('test.log', 'w')
>>> f1.write('abc') >>> f1.close() >>> file('test.log').read()
3 for Loop
Python에서 for는 목록을 반복하는 데 사용됩니다. 예:>>> li = [1, 2, 3] >>> for i in li:
...
12
3
이 출력은 print " n과 동일합니다. ".joni(li)도 마찬가지입니다.
다른 언어처럼 숫자 세기에 for를 사용하고 싶다면 다음 방법을 사용하면 됩니다.
>>> 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
4 Python 모듈에서 sys.modules
를 사용합니다. sys 모듈의 전역 사전 객체.모듈을 가져온 후에는 sys.modules에서 찾을 수 있습니다.
각 클래스에는 내장된 "클래스 속성"인 __module__이 있습니다. 그 값은 클래스를 정의하는 모듈의 이름입니다.5 디렉토리 작업
모듈에는 os.path 및 디렉토리가 참조하는 여러 작업 파일이 있습니다. 예:>>> import os >>> os.path.join("c:\music", "mahadeva.mp3")
这个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异常和文件处理机制相关文章请关注PHP中文网!