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: