모든 zip 파일을 추출하고 모든 파일이 저장 될 폴더에 동일한 이름을 지정하려고합니다. 폴더의 모든 파일을 반복 한 다음 해당 파일 내의 행을 반복하여 다른 텍스트 파일에 기록합니다.
이것은 지금까지 내 코드입니다.
#!usr/bin/env python3
import glob
import os
import zipfile
zip_files = glob.glob('*.zip')
for zip_filename in zip_files:
dir_name = os.path.splitext(zip_filename)[0]
os.mkdir(dir_name)
zip_handler = zipfile.ZipFile(zip_filename, "r")
zip_handler.extractall(dir_name)
path = dir_name
fOut = open("Output.txt", "w")
for filename in os.listdir(path):
for line in filename.read().splitlines():
print(line)
fOut.write(line + "\n")
fOut.close()
이것은 내가 발생하는 오류입니다.
for line in filename.read().splitlines():
AttributeError: 'str' object has no attribute 'read'
파일을 열고 파일 경로를 결합해야합니다. 또한 분할 선을 사용하고 각 줄에 줄 바꿈을 추가하는 것은 약간 중복됩니다.
path = dir_name
with open("Output.txt", "w") as fOut:
for filename in os.listdir(path):
# join filename to path to avoid file not being found
with open(os.path.join(path, filename)):
for line in filename:
fOut.write(line)
with
파일이 자동으로 닫히므로 항상를 사용 하여 파일을 열어야합니다. 파일이 크지 않으면 간단하게 fOut.write(f.read())
루프를 제거 할 수 있습니다 .
또한 path = dir_name
경로가 dir_name
첫 번째 루프에 있던 마지막 값이 원하는대로 설정 될 수도 있고 그렇지 않을 수도 있음을 의미합니다. 를 사용 iglob
하여 전체 목록을 만들지 않을 수도 있습니다 zip_files = glob.iglob('*.zip')
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다