1
코드는 디렉토리에서 xls 파일을 읽고 csv 파일로 변환 한 후 다른 디렉토리로 복사하는 것입니다.python shutil : 파일의 일부만 복사하십시오.
filePath = os.path.join('.', 'attachments')
filePaths = [f for f in os.listdir(filePath) if os.path.isfile(os.path.join(filePath, f)) and f.endswith('.xls')]
for f in filePaths:
wb = xlrd.open_workbook(os.path.join(filePath, f))
sheet = wb.sheet_by_index(0)
filename = f + '.csv'
fp = open(os.path.join(filePath, filename), 'wb')
wr = csv.writer(fp, quoting=csv.QUOTE_ALL)
for rownum in xrange(sheet.nrows):
wr.writerow(sheet.row_values(rownum))
fp.close
shutil.copy(os.path.join('.', 'attachments', filename), new_directory)
결과는 다음과 같습니다 XLS 파일이 성공적으로 csv 파일로 변환하지만, new_directory에 복사 된 파일은 CSV 파일의 일부를 포함합니다.
예를 들어 원본 csv 파일의 행은 30 개이지만 복사 된 파일의 행은 17 개뿐입니다. 왜 이런 일이 일어날까요? 당신은 단지 방법으로 그것을 참조하지, 전화close
방법이 필요
fp.close
:
음, 어디. 빠른 답변 주셔서 대단히 감사합니다! – Cacheing
하지만 여전히'fp.close'를 사용하여 오류를 얻지 못했습니다. 'fp.close'와'fp.close()'의 차이점은 무엇입니까? – Cacheing
'fp.close'는 함수에 대한 참조를 얻습니다. 오류가 아닙니다.이 참조를 변수에 저장하여 나중에 호출하고, 다른 함수에 전달하여 결국 호출 할 수 있습니다.'()'는 함수를 호출 *하는 작업입니다 (즉, 실행합니다). 그것. 따라서 일반적인 함수 호출은 실제로 두 부분으로 구성됩니다. 1) 함수에 대한 참조를 가져옵니다 (이름을 지정하고 다른 객체에 대한 참조를 얻는 것과 같습니다). 2) 호출합니다. – kindall