반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 컴퓨터비전
- 네트워크
- 데이터분석
- 소프트웨어공학
- 소프트웨어
- 프로그래밍언어
- 2
- Yes
- I'm Sorry
- 보안
- 사이버보안
- 자료구조
- 클라우드컴퓨팅
- 파이썬
- 자바스크립트
- 버전관리
- 데이터구조
- 컴퓨터과학
- 데이터과학
- 인공지능
- 머신러닝
- 네트워크보안
- 알고리즘
- 코딩
- 웹개발
- 프로그래밍
- 컴퓨터공학
- 데이터베이스
- 빅데이터
- 딥러닝
Archives
- Today
- Total
스택큐힙리스트
Pathlib 경로에 접근할 때 발생하는 오류입니다. Path.parents를 사용합니다. 본문
반응형
파이썬 IDE(PyCharm)에서 다음 코드 스니펫을 실행할 때 왜 제대로 작동하고 원하는 결과를 반환하지만, 명령줄에서 스크립트를 실행하면 다음과 같은 오류가 발생하는지 궁금합니다:
import os
from pathlib import Path
if os.path.isfile('shouldfail.txt'):
p = Path(__file__).parents[0]
p2 = Path(__file__).parents[2]
path_1 = str(p)
path_2 = str(p2)
List = open(path_1 + r/shouldfail.txt).readlines()
List2 = open(path_2 + r/postassembly/target/generatedShouldfail.txt).readlines()
여기서 제가 놓친 것이 무엇인가요?
또한 현재 스크립트를 실행하는 경로에서 두 폴더를 좀 더 쉽게 이동할 수 있는 더 나은 방법이 있을까요?
답변 1
__file__
는 상대적 경로일 수 있으며, traceback에 표시된대로 바로 Script.py
입니다.
먼저 절대 경로로 변환하세요:
here = Path(__file__).resolve()
p = here.parents[0]
p2 = here.parents[2]
open()
은 pathlib.Path()
객체를 받으므로, 이를 문자열로 변환할 필요가 없습니다.
즉, 다음과 같이 사용할 수 있습니다:
with open(path_1 / shouldfail.txt) as fail:
list1 = list(fail)
with open(path_2 / postassembly/target/generatedShouldfail.txt) as generated:
list = list(generated)
(열린 파일 개체에 대해 리스트를 호출하면 모든 줄을 얻을 수 있습니다).
데모:
>>> from pathlib import Path
>>> Path('스크립트')
WindowsPath('스크립트')
>>> Path('스크립트').resolve()
WindowsPath('C:\\Users\\Bob\\더나은경로\\스크립트')
>>> Path('스크립트').resolve().parents[2] / '실패해야합니다.txt'
WindowsPath('C:\\Users\\Bob\\실패해야합니다.txt')
답변 2
경로 접근 중 Pathlib 오류: Path.parents 에 대한 접근 방법경로 조작은 프로그래밍에서 매우 중요한 작업이다. 이를 위해 Python에서는 Pathlib 모듈을 제공한다. Pathlib 모듈은 경로의 생성, 수정, 이동 및 접근 등 다양한 작업을 쉽게 수행할 수 있도록 도와준다. 그러나 때로는 Pathlib을 사용하여 경로에 접근할 때 오류가 발생할 수 있다. 이 중 하나는 Path.parents 속성에 접근할 때 발생하는 오류이다.
Path.parents는 현재 경로를 기준으로 상위 디렉토리를 나타내는 속성이다. 이를 사용하면 상위 디렉토리에 대한 경로에 접근할 수 있으므로 파일 또는 디렉토리가 위치한 디렉토리에 대한 정보를 얻을 수 있다.
그러나 Path.parents를 사용할 때 일부 오류가 발생할 수 있다. 이 오류를 찾고 해결하기 위해서는 몇 가지 주요 요인을 고려해야 한다. 첫째, 경로가 실제로 존재하는지 확인해야 한다. 만약 경로가 존재하지 않는다면 Path.parents를 호출하면 오류가 발생할 수 있다. 둘째, 경로에 대한 올바른 권한이 있는지 확인해야 한다. 경로에 대한 읽기/쓰기 권한이 없다면 Path.parents를 호출해도 오류가 발생할 수 있다. 따라서 권한을 확인하고 필요한 경우 수정해야 한다.
이러한 오류를 피하기 위해 Path.exists() 메서드를 사용하여 경로가 존재하는지 확인할 수 있다. Path.exists() 메서드는 해당 경로가 실제로 존재하는지 여부를 확인하여 Boolean 값을 반환한다. 경로가 존재하지 않을 경우, Path.parents를 호출하기 전에 예외 처리를 통해 오류를 방지할 수 있다.
또한, Path.is_dir() 메서드를 사용하여 경로가 디렉토리인지 확인할 수 있다. 만약 경로가 파일인 경우 Path.parents를 호출해도 오류가 발생할 수 있다. 따라서 Path.is_dir()을 호출하여 예외 처리를 통해 오류를 방지해야 한다.
경로 접근 중 발생하는 Pathlib 오류는 일반적으로 경로의 존재 여부 및 권한 문제와 관련이 있다. 이를 해결하기 위해 Path.exists() 및 Path.is_dir() 메서드를 활용하여 예외 처리를 수행하면 오류를 피할 수 있다. 이를테면, 경로를 조작하거나 경로의 부모 디렉토리에 접근해야 하는 경우, 이러한 문제에 대비하여 예외 처리를 적절하게 구현하는 것이 중요하다.
결론적으로, Pathlib을 사용하여 경로에 접근할 때 발생하는 오류 중 하나는 Path.parents에 접근하는 과정에서 발생할 수 있다. 이러한 오류를 방지하기 위해 경로의 존재 여부를 확인하고, 경로가 디렉토리인지 확인하는 예외 처리를 구현해야 한다. 이를 통해 경로 조작을 올바르게 수행하고 오류를 피할 수 있다.
(단어 수: 345)
반응형
Comments