16 진수 값 "FFD8"로 시작하는 파일에 대해 경로와 하위 디렉토리를 재귀 적으로 검색하는 무언가를 작성하려고합니다. 스크립트를 실행할 때 인수 매개 변수에 지정된 위치로 작업하도록했으나 하위 디렉토리로 이동해야 할 때 문제가 발생합니다.파이썬에서 os.walk를 사용하여 디렉토리를 변경하십시오.
import string, sys, os
os.chdir(sys.argv[1])
for root, dir, files in os.walk(str(sys.argv[1])):
for fp in files:
f = open(fp, 'rb')
data = f.read(2)
if "ffd8" in data.encode('hex'):
print "%s starts with the offset %s" % (fp, data.encode('hex'))
else:
print "%s starts wit ha different offset" % (fp)
나는 os.chdir 명령을 사용해야하는 이유를 모르겠어요하지만 스크립트가 내 바탕 화면에서 실행되는 것이없는 몇 가지 이유에 대해이 매개 변수를 무시하고 항상에서 검색을 실행하려고 데스크톱 디렉토리, 내가 지정한 경로에 관계없이.
이의 출력은 파일 된 doc.kml이 바탕 화면에 하위 폴더 안에 때문입니다,
autodl2.cfg starts wit ha different offset DATASS.jpg starts with the offset ffd8 IMG_0958.JPG starts with the offset ffd8 IMG_0963.JPG starts with the offset ffd8 IMG_0963_COPY.jpg starts with the offset ffd8 project.py starts wit ha different offset Uplay.lnk starts wit ha different offset Traceback (most recent call last): File "C:\Users\Frosty\Desktop\EXIF PROJECT\project2.py", line 15, in <module> f = open(fp, 'rb') IOError: [Errno 2] No such file or directory: 'doc.kml'
가 지금은 왜이 오류 여기에 이유를 알 수있다. 누구든지 문제없이 하위 디렉토리를 계속 스캔 할 수 있도록 디렉토리를 변경하는 가장 쉬운 방법에 대해 somelight를 공개 할 수 있습니까? 감사!
작은 세부 사항 :가 줄을 제거하는 것이 좋습니다 것'데이터 = f.read (2) '와 함께하면 문을 대체 할'경우 f.read
사용
os.path.join
두에 합류 (2) == '\ xff \ xd8':'. 16 진수 인코딩 작업을 수행하지 않는다는 점을 제외하고는 실질적으로 동일합니다. – Robin