>  기사  >  백엔드 개발  >  Python 예외 및 파일 처리 메커니즘

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

高洛峰
高洛峰원래의
2017-02-28 16:33:131377검색

이 문서의 예에서는 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中文网!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.