2016-06-16 2 views
0

폴더의 여러 텍스트 파일을 읽고 싶습니다. os.listdir()을 사용하여 내 폴더의 모든 파일을 가져옵니다. 텍스트 파일을 읽고 파일을 쓰려면 쓰기를 사용하고 있습니다. 그러나 코드를 실행할 때 오류가 발생합니다. 여기에 코드를 첨부했습니다.오류 : 해당 파일이나 디렉토리가 없습니다. 'satu.txt'

import os 
infilename = os.listdir("C:\Python27\input") 
for filename in infilename: 
    f = open(filename, "r") 
    data = f.read() 
    f.close() 
+0

어디에서 스크립트를 작성하고 어떻게 실행합니까? 상대 경로가 틀릴 수도 있습니다. – dazedconfused

+0

스크립트를 Python 폴더 안에 넣습니다. Python Shell을 사용하여 실행됩니다. 파일 이름을 인쇄 할 때 파일 이름을 표시하지만 읽을 수는 없습니다. 이, infilename에서 파일 이름에 대한 –

+0

같은 : 파일 경로를 구축 할 때 \t 인쇄 파일 이름 \t satu.txt –

답변

0

os.listdir 그것을 찾기 위해 open 위해서는 디렉토리 이름, 파일 이름을 결합해야합니다, 그냥 파일 이름을 반환합니다

import os 

infilename = os.listdir(r'C:\Python27\input') 
for filename in infilename: 
    f = open(os.path.join(r'C:\Python27\input', filename), 'r') 
    data = f.read() 
    f.close() 

당신이 문자열에 \를 사용하는 경우, 원시 문자열을 사용해야하므로 \n과 같은 문자는 그대로 사용되며 해석되지 않습니다. 문자열의 시작 부분에있는 r'은 그것을 원시 문자열로 표시합니다 (파이썬이 문자 그대로 취합니다).

+0

나는이 코드를 사용하여 폴더 안에있는 모든 파일을 읽고 쓸 수 있습니다. 그 이유는 결과가 하나의 파일 만 저장하는 이유입니다. 이전 파일을 새 파일로 바꿉니다. –

2

python 스크립트가 같은 디렉토리에 있지 않으면이 오류가 발생합니다.

파일 이름뿐만 아니라 파일의 전체 경로를 참조해야합니다. 여기

import os 

indir = "C:\Python27\input" 

for filename in os.listdir(indir): 
    fullpath = os.path.join(indir,filename) 
    with open(fullpath, "r") as f: 
     data = f.read() 
0

문제는 os.listdir는 해당 디렉토리에있는 파일 이름 만 반환합니다. 작동하려면 파일 이름 앞에 경로를 추가해야합니다.

import os 
import sys 

drive = os.path.splitdrive(sys.executable)[0] 
drive = os.path.join(drive, "Python27") 
drive = os.path.join(drive, "input") 
infilename = os.listdir(drive) 
for filename in infilename: 
    f = open(os.path.join(drive, filename), "r") 
    data = f.read() 
    f.close() 
+0

항상 사용 satu2.txt'대신'+'의 os.path.join'. –

0
import os 
path = "C:\\Python27\\input" 
infilename = os.listdir(path) 
for filename in infilename: 
    print(path + "\\"+ filename) 
    f = open(path + "\\" + filename, "r") 
    data = f.read() 
    f.close() 
관련 문제