"""
Script which takes one or more file paths and reports on their detected
encodings
Example::
% chardetect somefile someotherfile
somefile: windows-1252 with confidence 0.5
someotherfile: ascii with confidence 1.0
If no paths are provided, it takes its input from stdin.
"""
import argparse import sys from typing import Iterable, List, Optional
from .. import __version__ from ..universaldetector import UniversalDetector
def description_of(
lines: Iterable[bytes],
name: str = "stdin",
minimal: bool = False,
should_rename_legacy: bool = False,
) -> Optional[str]: """ Return a string describing the probable encoding of a file or
list of strings.
:param lines: The lines to get the encoding of.
:type lines: Iterable of bytes
:param name: Name of file or collection of lines
:type name: str
:param should_rename_legacy: Should we rename legacy encodings to
their more modern equivalents?
:type should_rename_legacy: ``bool`` """
u = UniversalDetector(should_rename_legacy=should_rename_legacy) for line in lines:
line = bytearray(line)
u.feed(line) # shortcut out of the loop to save reading further - particularly useful if we read a BOM. if u.done: break
u.close()
result = u.result if minimal: return result["encoding"] if result["encoding"]: return f'{name}: {result["encoding"]} with confidence {result["confidence"]}' return f"{name}: no result"
def main(argv: Optional[List[str]] = None) -> None: """
Handles command line arguments and gets things started.
:param argv: List of arguments, asif specified on the command-line. IfNone, ``sys.argv[1:]`` is used instead.
:type argv: list of str """ # Get command line arguments
parser = argparse.ArgumentParser(
description=( "Takes one or more file paths and reports their detected encodings"
)
)
parser.add_argument( "input",
help="File whose encoding we would like to determine. (default: stdin)",
type=argparse.FileType("rb"),
nargs="*",
default=[sys.stdin.buffer],
)
parser.add_argument( "--minimal",
help="Print only the encoding to standard output",
action="store_true",
)
parser.add_argument( "-l", "--legacy",
help="Rename legacy encodings to more modern ones.",
action="store_true",
)
parser.add_argument( "--version", action="version", version=f"%(prog)s {__version__}"
)
args = parser.parse_args(argv)
for f in args.input: if f.isatty():
print( "You are running chardetect interactively. Press " "CTRL-D twice at the start of a blank line to signal the " "end of your input. If you want help, run chardetect " "--help\n",
file=sys.stderr,
)
print(
description_of(
f, f.name, minimal=args.minimal, should_rename_legacy=args.legacy
)
)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.