> 백엔드 개발 > 파이썬 튜토리얼 > Python 예외 및 파일 처리 메커니즘

Python 예외 및 파일 처리 메커니즘

高洛峰
풀어 주다: 2017-02-28 16:33:13
원래의
1424명이 탐색했습니다.

이 문서의 예에서는 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: &#39;c&#39;
로그인 후 복사

검색 목록에 없는 값은 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
로그인 후 복사

에 해당합니다. 아래 첨자가 목록의 요소를 참조하는 경우에는 IndexError 예외가 생성됩니다. 예:

>>> 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"
로그인 후 복사

위 코드에서

open은 파일을 열고 파일 개체를 반환하는 데 사용됩니다.

try Except 뒤에 올 수 있습니다. else 문. 지정된 예외가 발견되지 않으면

모듈을 가져올 때 ImportError 예외가 발생합니다. 자신만의 예외 클래스를 정의하세요. 정의할 때 내장된 Exception 클래스를 상속받으세요. 그런 다음 예외를 발생시켜야 할 때 raise를 사용하세요.

2 파일 객체 작업

앞서 언급했듯이 open은 파일을 열고 파일 객체를 반환하는 데 사용할 수 있습니다.


open(name[, mode[, buffering]])
로그인 후 복사

3개의 매개변수가 있습니다(마지막 두 개는 선택사항입니다). 이들은 파일 이름, 열기 방법 및 버퍼 매개변수를 나타냅니다. 예:

>>> f = open("/music/_singles/kairo.mp3", "rb")
로그인 후 복사

"rb"로 지정됩니다. 이 매개변수가 기본값인 경우 파일을 텍스트 모드로 여는 것을 의미합니다.

열 수 없으면 IOError 예외가 발생합니다.

이제 파일 개체의 name 속성과 mode 속성을 사용하여 쿼리할 수 있습니다. 예:

>>> f.name
&#39;/music/_singles/kairo.mp3&#39;
>>> f.mode
&#39;rb&#39;
로그인 후 복사

파일을 연 후. 예를 들면 다음과 같습니다.

>>> f.tell()
로그인 후 복사
로그인 후 복사

현재 위치를 쿼리합니다.

0
>>> f.seek(0, 2)
로그인 후 복사

Location 파일 포인터. 첫 번째 매개변수는 오프셋 값입니다. 두 번째 매개변수는 0. 1. 2의 세 가지 값을 가질 수 있습니다. 각각 시작, 현재 위치, 끝을 나타냅니다. 올바르지 않으면(예: 범위를 초과함) IOError 예외가 발생합니다.

따라서 이 문은 파일 포인터를 파일 끝으로 배치합니다.

>>> f.tell()
로그인 후 복사
로그인 후 복사

파일의 길이를 출력합니다.

>>> f.seek(-128, 2)
>>> data = f.read(128)
로그인 후 복사

파일의 마지막 128바이트를 읽고 읽은 데이터를 문자열로 반환합니다. .데이터를 읽을 때 파일도 뒤로 이동합니다.

읽기의 매개변수는 읽을 최대 바이트 수를 나타냅니다. 이 매개변수는 생략될 수도 있습니다. 파일.

읽는 동안 오류가 발생하는 경우(예: 디스크에 불량 섹터가 있거나 네트워크 연결이 끊어진 경우) IOError 예외가 발생합니다.

>>> f.closed
로그인 후 복사

파일이 닫혀 있는지 확인하세요.

False
>>> f.close()
로그인 후 복사

더 이상 사용하지 않을 때는 파일을 닫아야 합니다. 이미 닫은 파일은 다시 닫을 수 있습니다. (예외는 발생하지 않습니다.)

>>> f.closed
True
로그인 후 복사

닫은 후 f에 대해 검색() 및 기타 작업을 수행하면 ValueError 예외가 발생합니다.

파일을 쓰는 방법은 읽기와 비슷합니다. 그러나 "쓰기"를 위해 파일을 열어야 합니다. 예:

>>> f1 = open(&#39;test.log&#39;, &#39;w&#39;)
로그인 후 복사


w'는 쓰기용으로 열기를 의미합니다. 파일이 존재하지 않아도 생성됩니다.

>>> f1.write(&#39;abc&#39;)
>>> f1.close()
>>> file(&#39;test.log&#39;).read()
로그인 후 복사

file()로 파일을 여는 것은 open()으로 여는 것과 같습니다. 따라서 다음을 인쇄하세요.

'abc'

3 for Loop

Python에서 for는 목록을 반복하는 데 사용됩니다. 예:

>>> li = [1, 2, 3]
>>> for i in li:
로그인 후 복사

이를 통해 i는

... print i

...

1

2

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
로그인 후 복사

위의 결과를 인쇄하고 "n".join(["%d = %s" % (k, v) for k, v in d.items()]) 동일합니다.

4 Python 모듈에서 sys.modules

를 사용합니다. sys 모듈의 전역 사전 객체.

모듈을 가져온 후에는 sys.modules에서 찾을 수 있습니다.

각 클래스에는 내장된 "클래스 속성"인 __module__이 있습니다. 그 값은 클래스를 정의하는 모듈의 이름입니다.

5 디렉토리 작업

모듈에는 os.path 및 디렉토리가 참조하는 여러 작업 파일이 있습니다. 예:

>>> import os
>>> os.path.join("c:\music", "mahadeva.mp3")
로그인 후 복사

这个join函数用来将一个或多个字符串构造成一个路径名.

&#39;c:\music\mahadeva.mp3&#39;
>>> 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
&#39;c:\music&#39;
>>> filename
&#39;a.mp3&#39;
>>> (a, b) = os.path.splitext("a.mp3")
로그인 후 복사

类似的. 这个splitext用来将一个全文件名分成 文件名 和 扩展名 两部分.

>>> a
&#39;a&#39;
>>> b
&#39;.mp3&#39;
로그인 후 복사

列出目录用:

>>> os.listdir("c:\")
로그인 후 복사

这个函数将返回一个字符串list. 包括所有的文件和文件夹的名字.

[&#39;boot.ini&#39;, &#39;CONFIG.SYS&#39;, &#39;AUTOEXEC.BAT&#39;, &#39;java&#39;, 等]
로그인 후 복사

要判断一个字符串路径到底是一个文件还是一个文件夹. 用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(&#39;c:\music\*.mp3&#39;)
로그인 후 복사

则返回的list中包含了该目录下所有的 .mp3 后缀的文件名.

更多python异常和文件处理机制相关文章请关注PHP中文网!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿