Utilizando Python3, esperamos os.walk
un directorio de archivos, léelos en un objeto binario (¿cadena?) Y haga un procesamiento adicional en ellos. Primer paso, sin embargo: ¿Cómo leer los resultados de los archivos de os.walk
?¿Cómo leer el contenido del archivo desde un archivo?
# NOTE: Execute with python3.2.2
import os
import sys
path = "/home/user/my-files"
count = 0
successcount = 0
errorcount = 0
i = 0
#for directory in dirs
for (root, dirs, files) in os.walk(path):
# print (path)
print (dirs)
#print (files)
for file in files:
base, ext = os.path.splitext(file)
fullpath = os.path.join(root, file)
# Read the file into binary? --------
input = open(fullpath, "r")
content = input.read()
length = len(content)
count += 1
print (" file: ---->",base,"/",ext," [count:",count,"]", "[length:",length,"]")
print ("fullpath: ---->",fullpath)
ERROR:
Traceback (most recent call last):
File "myFileReader.py", line 41, in <module>
content = input.read()
File "/usr/lib/python3.2/codecs.py", line 300, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe2 in position 11: invalid continuation byte
Tks, Lennart - Sí, esto era el ingrediente secreto que necesitaba. ¡Algo nuevo para Python3! – DrLou
No es en realidad Python que 3 específico. Los archivos binarios también deben abrirse con la bandera 'b' en Python 2. –
Sí, todo parece bastante tonto en retrospectiva, ¡pero así es como los idiotas aprendemos! Probablemente estés pensando: ¡RTFM! Gracias de nuevo por la ayuda. – DrLou