Einfache Datei mit Umlauten einlesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
lunar

@CM: "file" ist nicht überall "file" :) Es gibt verschiedene Implementierungen für verschiedene Systeme, manche besser, manche schlechter. Nach POSIX ist "file" nicht verpflichtet, die Kodierung einer Textdatei zu erraten. Die Ausgabe "data" ist vollkommen konform zu den Erfordernissen von POSIX, und mithin auch nicht komisch, sondern insbesondere auf alten Unix-Systemen sogar zu erwarten. Das Erraten der Kodierung ist nicht Pflicht, sondern Kür.

Insofern ist in diesem Fall doch das System des OP Schuld an dieser nicht sonderlich hilfreichen Ausgabe :)
Benutzeravatar
snafu
User
Beiträge: 6858
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@api

Ein Hinweis noch zum von dir verwendeten Shebang:

Code: Alles auswählen

#! /opt/python3.1/bin/python3
Du machst dein Skript portabler, wenn du den Zwischenschritt über das Tool `env` gehst:

Code: Alles auswählen

#!/usr/bin/env python3
Das geht die Verzeichnisse aus dem `$PATH` in der gegebenen Reihenfolge durch und führt die erste Möglichkeit aus, die sich aus Verzeichnis + `python3` ergibt. Klappt dementsprechend natürlich nur, wenn `/opt/python3.1/bin` in deinem `$PATH` auftaucht und (sofern relevant) *vor* dem Verzeichnis steht, welches einen anderen (nicht zu nutzenden) Python 3 Interpreter beinhaltet. Der Vorteil daran ist, dass andere Anwender, die ihren Interpreter beispielsweise in `/usr/bin` haben, den Shebang vor Ausführung des Skripts nicht extra anpassen müssen. `env` übernimmt also im Grunde das, was eine Shell üblicherweise nach Eingabe von einem schlichten `python3` tun würde (was ja als Shebang nicht funktioniert).

Im Übrigen finde ich es etwas ungewöhnlich, ein `/bin` unter `/opt/python3.1` zu haben (hätte es wohl eher direkt unter `/opt` gelegt), aber du wirst schon wissen, was du tust (falls du es beeinflussen kannst). ;)
BlackJack

@snafu: Unter ``/opt/`` sind Programme in der Regel unter ``/opt/{produkt}/bin/`` oder ``/opt/{hersteller}/{produkt}/bin`` zu finden. Beispiele von dem Rechner an dem ich gerade tippe:

Code: Alles auswählen

bj@s8n:~$ ls /opt/Adobe/Reader9/bin/
acroread
bj@s8n:~$ ls /opt/jython-2.5.1/bin/
jython
bj@s8n:~$ ls /opt/IBM/informix/bin/
check_version  esql      glfiles         infxserver  onpassword
chkenv         esqldemo  ifx_getversion  msgfile     rofferr
crtcmap        finderr   infxmsg         oncmsm      sqliprint
Der Filesystem Hierarchy Standard (FHS) sagt dazu:
FHS hat geschrieben:A package to be installed in /opt must locate its static files in a separate /opt/<package> or /opt/<provider> directory tree, where <package> is a name that describes the software package and <provider> is the provider's LANANA registered name.
Ein ``/opt/bin/``-Verzeichnis fänd ich ziemlich überraschend.
Benutzeravatar
snafu
User
Beiträge: 6858
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Stehen die denn dann im $PATH?
BlackJack

@snafu: Teilweise. Bei anderen gibt es symbolische Links in ``/usr/local/bin`` auf die ausführbaren Binärdateien. Wieder andere starte ich mit dem kompletten Pfad.
Antworten