Hallo,
Weisst jemand wie ich Ländereinstellungen mit Python ändern kann?
Danke im voraus.
Ländereinstellungen
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Schau dir mal das Module locale an: http://www.python.org/doc/current/lib/m ... ocale.html
-
- User
- Beiträge: 16
- Registriert: Mittwoch 19. Januar 2005, 23:30
Danke jens, ich hab die locale Module angeschaut aber ist nur fuer Unix gedacht, oder?
Nein, das sollte auf jedem System funktionieren das die `locale` Funktionen der ANSI C Standardbibliothek unterstützt.be_veronic hat geschrieben:Danke jens, ich hab die locale Module angeschaut aber ist nur fuer Unix gedacht, oder?
Am einfachsten und am portababelsten kann man übrigens mit ``locale.setlocale(locale.LC_ALL, '')`` (der zweite Parameter ist eine leere Zeichenkette) auf die Sprache umstellen, die der Anwender bzw. das Betriebssystem benutzt. Ansonsten sind die Namen für `locale` Einstellungen leider nicht besonders genormt.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hab gerade noch ein bischen mit local gespielt:
Ergibt bei mir das:
Code: Alles auswählen
import time, locale
locale.setlocale(locale.LC_ALL, '')
print locale.getlocale()
print locale.getdefaultlocale()
print locale.getpreferredencoding()
print locale.format("%.2f",1200000.575,1)
for k,v in locale.localeconv().iteritems():
print "%20s: %s" % (k,v)
Code: Alles auswählen
('de_DE', '1252')
('de_DE', 'cp1252')
cp1252
1.200.000,58
mon_decimal_point: ,
int_frac_digits: 2
p_sep_by_space: 1
frac_digits: 2
thousands_sep: .
n_sign_posn: 1
decimal_point: ,
int_curr_symbol: EUR
n_cs_precedes: 0
p_sign_posn: 1
mon_thousands_sep: .
negative_sign: -
currency_symbol: €
n_sep_by_space: 1
mon_grouping: [3, 0]
p_cs_precedes: 0
positive_sign:
grouping: [3, 0]
-
- User
- Beiträge: 16
- Registriert: Mittwoch 19. Januar 2005, 23:30
Danke für Ihre Antworten. Das Problem ist dass ich folgende Skript an einem deutsch sprachige OS ausführen möchte:
Wenn ich statt "Process" , "Prozess" eingebe dann läuft es bis AddCounter. Es funktioniert nur wenn ich Systemsteuerung->Ländereinstellungen auf English setze. Aber dass möchte ich nicht manuell sondern in dem Python skript machen.
Danke im voraus.
Edit (Leonidas): Code in Python-Tags gesetzt, aber einrücken werde ich nicht.
Code: Alles auswählen
import win32pdh
object = 'Process'
items, instances = win32pdh.EnumObjectItems(None, None, object,
win32pdh.PERF_DETAIL_WIZARD)
instance_dict = {}
for instance in instances:
try:
instance_dict[instance] = instance_dict[instance] + 1
except KeyError:
instance_dict[instance] = 0
for instance, max_instances in instance_dict.items():
for inum in xrange(max_instances+1):
hq = win32pdh.OpenQuery()
hcs = []
for item in ['ID Process', 'Creating Process ID']:
path = win32pdh.MakeCounterPath((None,object,instance,
None,inum,item))
hcs.append(win32pdh.AddCounter(hq,path))
win32pdh.CollectQueryData(hq)
print "%-15s\t" % (instance[:15]),
for hc in hcs:
type,val=win32pdh.GetFormattedCounterValue(hc,win32pdh.PDH_FMT_LONG)
print "%5d" % (val),
win32pdh.RemoveCounter(hc)
print
win32pdh.CloseQuery(hq)
Danke im voraus.
Edit (Leonidas): Code in Python-Tags gesetzt, aber einrücken werde ich nicht.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ich denke nicht, das es aus Python einfach geht. Und macht es überhaupt Sinn?be_veronic hat geschrieben:Es funktioniert nur wenn ich Systemsteuerung->Ländereinstellungen auf English setze. Aber dass möchte ich nicht manuell sondern in dem Python skript machen.
Was sagt denn locale.getdefaultlocale() ??? Kannst du da nicht sowas machen wie:
Code: Alles auswählen
if locale.getdefaultlocale()[0] == "de_DE":
object = 'Prozess'
else:
object = 'Process'
Natürlich funktionieren beide Geschichten nur auf einem deutschen und englischen Windows...
-
- User
- Beiträge: 16
- Registriert: Mittwoch 19. Januar 2005, 23:30
Hi jens,
Obwohl ich statt Process Prozess eingebe, ich bekomme noch folgende Fehlermeldung. Es läuft alles nur wenn ich als Ländereinstellung English wähle, locale.setlocale(locale.LC_ALL,'en') reichts leider nicht.
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
File "C:\Python24\lib\site-packages\enum.py", line 25, in ?
hcs.append(win32pdh.AddCounter(hq , path))
error: (-1073738823, 'AddCounter', 'No error message is available')
Obwohl ich statt Process Prozess eingebe, ich bekomme noch folgende Fehlermeldung. Es läuft alles nur wenn ich als Ländereinstellung English wähle, locale.setlocale(locale.LC_ALL,'en') reichts leider nicht.
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
File "C:\Python24\lib\site-packages\enum.py", line 25, in ?
hcs.append(win32pdh.AddCounter(hq , path))
error: (-1073738823, 'AddCounter', 'No error message is available')
Wenn ich das jetzt richtig verstehe willst Du nicht die Einstellung des/Deines Python Programms ändern sondern die eines anderen bzw. des Betriebssystems. Dann ist das `locale` Modul die falsche Baustelle.
-
- User
- Beiträge: 16
- Registriert: Mittwoch 19. Januar 2005, 23:30
Hi BlackJack,
Die Einstellungen des Betriebsystems will ich ändern, geht dass mit Python, und weisst du wie?
Danke.
Die Einstellungen des Betriebsystems will ich ändern, geht dass mit Python, und weisst du wie?
Danke.