@@ -66,7 +66,7 @@ def _iglob_pattern(pattern):
6666
6767
6868def _getline (filename , lineno ):
69- with open (filename , encoding = 'utf-8' ) as fp :
69+ with open (filename , encoding = 'utf-8' , errors = 'replace' ) as fp :
7070 for i , line in enumerate (fp , start = 1 ):
7171 if i == lineno :
7272 return line .rstrip ('\r \n ' )
@@ -114,7 +114,7 @@ def _handle_error(self, path, e, is_dir=False, exc_info=True, what='read'):
114114 :param what: str - what action caused the error (used for logging)
115115 """
116116 exc_cls = e .__class__ .__name__
117- exc_msg = e .strerror if hasattr (e , 'strerror' ) else e . message
117+ exc_msg = e .strerror if hasattr (e , 'strerror' ) else str ( e )
118118 message = 'failed to %s %s due to: %s' % (what , path , exc_cls )
119119 self .errors .append (message )
120120 if is_dir :
@@ -145,7 +145,7 @@ def _add_file(self, filename):
145145 self ._add_directory (dirname , check = True )
146146 try :
147147 info = get_filesystem_info (filename )
148- info ['lines' ] = open (filename , encoding = 'utf-8' ).read ().count ('\n ' )
148+ info ['lines' ] = open (filename , encoding = 'utf-8' , errors = 'replace' ).read ().count ('\n ' )
149149 self .files [filename ] = info
150150 except Exception as e :
151151 self ._handle_error (filename , e , is_dir = False )
@@ -337,7 +337,7 @@ def _skim_file(filename):
337337 yield filename
338338 try :
339339 # search each line for include or ssl_certificate directives
340- with open (filename , encoding = 'utf-8' ) as lines :
340+ with open (filename , encoding = 'utf-8' , errors = 'replace' ) as lines :
341341 for line in lines :
342342 if not has_directive (line ):
343343 continue
0 commit comments