import os
target_dir = "xxx.xxx.xx.xx/path/to/file/dir"
start_seq = "*** Start Sequence ***"
end_seq = "*** End Sequence ***"
def tp_parser(file):
with open(file) as in_f:
lines = in_f.readlines()
f_name = in_f.name[12:16]
for i, line in enumerate(lines):
if line.startswith(start_seq):
start_line = i
elif line.startswith(end_seq):
end_line = i
with open("{0}_Target_Map.txt".format(f_name), "w") as out_f:
for i, line in enumerate(lines):
if start_line <= i < end_line:
print(line)
# out_f.write(line)
for file in os.listdir(os.chdir(target_dir)):
tp_parser(file)
이 스크립트를 작성하여 파일 디렉토리를 살펴보고 각 파일의 특정 부분을 추출하여 별도의 텍스트 파일에 기록합니다. 호기심 누군가가이 부분은 여기 무슨 일이 일어나고 있는지에 대한 몇 가지 빛 ...예기치 않은 print() 및 os.listdir() 기능
빛날 수있는 경우 : I 인쇄 (라인)으로 스크립트를 실행하는 경우
if start_line <= i < end_line:
print(line)
# out_f.write(line)
내가 다시 얻을 "UnboundLocalError을 : 지역 변수 ' end_line '할당 전에 참조 됨'오류가 발생했습니다. 그러나 out_f.write (줄)을 사용하여 스크립트를 실행하면 의도 한대로 작동합니다.
둘째 약간 덜 성가신 문제는이 부분이다 : 나는 (즉 os.chdir (TARGET_DIR)) 실제로 반복하는 작업 디렉토리로 전환해야하는 이유가 자신에게 설명 할 수
for file in os.listdir(os.chdir(target_dir)):
tp_parser(file)
파일. 나는 os.listdir() 자체가 파일 이름 목록을 반환한다는 것을 알고 있지만 os.listdir()에서 os.chdir() 인수를 전달하면 그 차이점이 무엇인지 알 수 있습니다.
미리 감사드립니다.
답변 주셔서 감사합니다. 두 개의 후속 질문 : 1. 실행 중 : os.listdir (target_dir)의 파일에 대해 : tp_parser (파일) 파일을 찾을 수 없음 오류가 발생합니다. 이것은 내가 파일 문자열을 open (파일)에 삽입하려고 시도했기 때문에 os.chdir() (상단 또는 listdir() 중 하나)을 사용하여 임시 해결책으로 사용하도록했습니다. 2.나는 당신이 맞지 않는 조건에 대해 맞다고 생각하지만, 왜 out_f.write (라인)을 사용할 때 같은 에러를 던지지 않을지 궁금하다. – blackmore5
그건 내가 우연의 일치로), 내 대답 편집을 참조하십시오. – progmatico