본문 바로가기
파이썬

파이썬 Do I need to pass the full path of a file in another directory to open()?

by º기록 2021. 2. 11.
반응형

반복하려는 10 개의 파일이있는 폴더가 있습니다. 파일 이름을 인쇄하면 코드가 제대로 작동합니다.

import os
indir = '/home/des/test'
for root, dirs, filenames in os.walk(indir):
    for f in filenames:
        print(f)

어떤 인쇄 :

1
2
3
4
5
6
7
8
9
10

하지만 루프에서 파일을 열려고하면 IO 오류가 발생합니다.

import os
indir = '/home/des/test'
for root, dirs, filenames in os.walk(indir):
    for f in filenames:
        log = open(f, 'r')

Traceback (most recent call last):
File "/home/des/my_python_progs/loop_over_dir.py", line 6, in <module>
log = open(f, 'r')
IOError: [Errno 2] No such file or directory: '1'
>>> 

루프 내에서도 파일의 전체 경로를 open () 에 전달해야합니까?

 

해결 방법

 

예, 전체 경로가 필요합니다.

log = open(os.path.join(root, f), 'r')

빠른 수정입니다. 주석에서 지적했듯이 os.walk 는 하위 디렉토리로 내려가므로 경로 조인의 기준으로 indir 대신 현재 디렉토리 루트를 사용해야합니다.

 

참조 페이지 https://stackoverflow.com/questions/11801309

 

 

반응형

댓글