unspecified-encoding (PLW1514)#
Derived from the Pylint linter.
Fix is always available.
This rule is unstable and in preview. The --preview
flag is required for use.
What it does#
Checks for uses of open
and related calls without an explicit encoding
argument.
Why is this bad?#
Using open
in text mode without an explicit encoding can lead to
non-portable code, with differing behavior across platforms. While readers
may assume that UTF-8 is the default encoding, in reality, the default
is locale-specific.
Instead, consider using the encoding
parameter to enforce a specific
encoding. PEP 597 recommends the use of encoding="utf-8"
as a default,
and suggests that it may become the default in future versions of Python.
If a local-specific encoding is intended, use encoding="local"
on
Python 3.10 and later, or locale.getpreferredencoding()
on earlier versions,
to make the encoding explicit.
Example#
Use instead: