백엔드 개발 파이썬 튜토리얼 Python 예외 및 파일 처리 메커니즘에 대한 자세한 설명

Python 예외 및 파일 처리 메커니즘에 대한 자세한 설명

Aug 04, 2016 am 08:55 AM
python 이상 파일 처리

이 문서의 예에서는 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'

로그인 후 복사

목록에 없는 값을 검색하면 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 문이 올 수 있습니다. 지정된 예외가 catch되지 않으면 else 문이 실행됩니다.


모듈을 가져올 때 모듈이 없으면 ImportError 예외가 발생합니다.

자신만의 예외 클래스를 정의할 수도 있습니다. 그런 다음 예외를 발생시켜야 할 때 raise를 사용하세요.

2 파일 개체 작업

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


open(name[, mode[, buffering]])
로그인 후 복사
에는 3개의 매개변수가 있습니다(마지막 두 개는 선택사항임). 이들은 각각 파일 이름, 열기 방법 및 버퍼 매개변수를 나타냅니다. 예:

>>> f = open("/music/_singles/kairo.mp3", "rb")

로그인 후 복사
두 번째 매개변수는 "rb"로 지정됩니다. 이는 파일을 바이너리 읽기 모드로 여는 것을 의미합니다.

열 수 없는 경우 open은 IOError 예외를 발생시킵니다.

이제 이름 속성과 모드 속성을 사용하여 파일 개체를 쿼리할 수 있습니다. 예:

>>> f.name
'/music/_singles/kairo.mp3'
>>> f.mode
'rb'

로그인 후 복사
파일을 연 후 읽고 쓸 수 있습니다. 예:

>>> f.tell()

로그인 후 복사
로그인 후 복사
현재 위치를 쿼리합니다.

0
>>> f.seek(0, 2)

로그인 후 복사
파일 포인터의 위치를 ​​지정합니다. 두 번째 매개변수는 1. 2의 세 가지 값을 가질 수 있습니다.

찾은 주소가 잘못된 경우(예: 범위 초과) IOError 예외가 발생합니다.

따라서 이 명령문은 파일 포인터를 파일 끝으로 이동합니다.

>>> f.tell()

로그인 후 복사
로그인 후 복사
파일 길이를 출력합니다.

>>> f.seek(-128, 2)
>>> data = f.read(128)

로그인 후 복사
파일의 마지막 128바이트를 읽고 읽은 데이터를 문자열로 반환합니다.

read 매개변수는 읽을 최대 바이트 수를 나타냅니다. 이 매개변수는 파일 끝까지 읽는다는 의미도 있습니다.

읽는 동안 오류가 발생하면(예: 디스크의 불량 섹터 또는 네트워크 연결 끊김) IOError 예외가 발생합니다.

>>> f.closed

로그인 후 복사
파일이 닫혀 있는지 확인하세요.

False
>>> f.close()

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

>>> f.closed
True

로그인 후 복사
f를 닫은 후 검색() 및 기타 작업을 수행하면 ValueError 예외가 발생합니다.

파일을 쓰는 방법은 읽는 것과 유사합니다. 그러나 "쓰기"를 위해서는 파일을 열어야 합니다. 예:


>>> f1 = open('test.log', 'w')

로그인 후 복사
여기서 'w'는 쓰기용으로 열기를 의미합니다. 이렇게 하면 파일이 존재하지 않더라도 기존 파일을 덮어쓰게 됩니다.

>>> f1.write('abc')
>>> f1.close()
>>> file('test.log').read()

로그인 후 복사
file()로 파일을 여는 것은 open()으로 파일을 여는 것과 같습니다.

'abc'

3 for 루프

Python에서는 목록을 순회하는 데 사용됩니다. 예:

>>> li = [1, 2, 3]
>>> for i in li:

로그인 후 복사
이렇게 하면 루프에서 li에 있는 요소의 값을 차례로 받을 수 있습니다.

... 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

로그인 후 복사
위의 인쇄 결과는 print "n".join(["%d = %s" % (k, v) for k, v in d.items()])와 같습니다.

4 sys.modules 사용

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程序设计有所帮助。

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까? Python 3.6에 피클 파일을로드 할 때 '__builtin__'모듈을 찾을 수없는 경우 어떻게해야합니까? Apr 02, 2025 am 07:12 AM

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

데비안 문자열은 여러 브라우저와 호환됩니다 데비안 문자열은 여러 브라우저와 호환됩니다 Apr 02, 2025 am 08:30 AM

"Debiantrings"는 표준 용어가 아니며 구체적인 의미는 여전히 불분명합니다. 이 기사는 브라우저 호환성에 직접 언급 할 수 없습니다. 그러나 "Debiantrings"가 Debian 시스템에서 실행되는 웹 응용 프로그램을 지칭하는 경우 브라우저 호환성은 응용 프로그램 자체의 기술 아키텍처에 따라 다릅니다. 대부분의 최신 웹 응용 프로그램은 크로스 브라우저 호환성에 전념합니다. 이는 웹 표준에 따라 웹 표준과 잘 호환 가능한 프론트 엔드 기술 (예 : HTML, CSS, JavaScript) 및 백엔드 기술 (PHP, Python, Node.js 등)을 사용하는 데 의존합니다. 응용 프로그램이 여러 브라우저와 호환되도록 개발자는 종종 브라우저 크로스 테스트를 수행하고 응답 성을 사용해야합니다.

휴대폰에서 XML을 PDF로 변환 할 때 변환 속도가 빠르나요? 휴대폰에서 XML을 PDF로 변환 할 때 변환 속도가 빠르나요? Apr 02, 2025 pm 10:09 PM

모바일 XML에서 PDF의 속도는 다음 요인에 따라 다릅니다. XML 구조의 복잡성. 모바일 하드웨어 구성 변환 방법 (라이브러리, 알고리즘) 코드 품질 최적화 방법 (효율적인 라이브러리 선택, 알고리즘 최적화, 캐시 데이터 및 다중 스레딩 사용). 전반적으로 절대적인 답변은 없으며 특정 상황에 따라 최적화해야합니다.

XML 수정에 프로그래밍이 필요합니까? XML 수정에 프로그래밍이 필요합니까? Apr 02, 2025 pm 06:51 PM

XML 컨텐츠를 수정하려면 프로그래밍이 필요합니다. 대상 노드를 추가, 삭제, 수정 및 확인하려면 정확한 찾기가 필요하기 때문입니다. 프로그래밍 언어에는 XML을 처리하기위한 해당 라이브러리가 있으며 운영 데이터베이스와 같이 안전하고 효율적이며 제어 가능한 작업을 수행 할 수있는 API를 제공합니다.

XML을 PDF로 변환 할 수있는 모바일 앱이 있습니까? XML을 PDF로 변환 할 수있는 모바일 앱이 있습니까? Apr 02, 2025 pm 08:54 PM

XML을 PDF로 직접 변환하는 응용 프로그램은 근본적으로 다른 두 형식이므로 찾을 수 없습니다. XML은 데이터를 저장하는 데 사용되는 반면 PDF는 문서를 표시하는 데 사용됩니다. 변환을 완료하려면 Python 및 ReportLab과 같은 프로그래밍 언어 및 라이브러리를 사용하여 XML 데이터를 구문 분석하고 PDF 문서를 생성 할 수 있습니다.

XML에서 댓글 내용을 수정하는 방법 XML에서 댓글 내용을 수정하는 방법 Apr 02, 2025 pm 06:15 PM

작은 XML 파일의 경우 주석 내용을 텍스트 편집기로 직접 교체 할 수 있습니다. 큰 파일의 경우 XML 파서를 사용하여 효율성과 정확성을 보장하기 위해 수정하는 것이 좋습니다. XML 주석을 삭제할 때주의를 기울이면 주석을 유지하면 일반적으로 코드 이해 및 유지 관리에 도움이됩니다. 고급 팁은 XML 파서를 사용하여 댓글을 수정하기위한 파이썬 샘플 코드를 제공하지만 사용 된 XML 라이브러리에 따라 특정 구현을 조정해야합니다. XML 파일을 수정할 때 인코딩 문제에주의하십시오. UTF-8 인코딩을 사용하고 인코딩 형식을 지정하는 것이 좋습니다.

XML을 이미지로 변환하는 프로세스는 무엇입니까? XML을 이미지로 변환하는 프로세스는 무엇입니까? Apr 02, 2025 pm 08:24 PM

XML 이미지를 먼저 변환하려면 먼저 XML 데이터 구조를 결정한 다음 Python의 Matplotlib와 같은 적절한 그래픽 라이브러리를 선택하고 데이터 구조를 기반으로 시각화 전략을 선택하고 데이터 볼륨 및 이미지 형식을 고려하고 효율적인 라이브러리를 수행하거나 필요에 따라 PNG, JPEG 또는 SVG로 저장하십시오.

XML 형식을 여는 방법 XML 형식을 여는 방법 Apr 02, 2025 pm 09:00 PM

대부분의 텍스트 편집기를 사용하여 XML 파일을여십시오. 보다 직관적 인 트리 디스플레이가 필요한 경우 Oxygen XML 편집기 또는 XMLSPy와 같은 XML 편집기를 사용할 수 있습니다. 프로그램에서 XML 데이터를 처리하는 경우 프로그래밍 언어 (예 : Python) 및 XML 라이브러 (예 : XML.etree.elementtree)를 사용하여 구문 분석해야합니다.

See all articles