Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 5, 2019 15:44:03

Koala
Зарегистрирован: 2015-10-28
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

calendar, datetime, etc: как сделать локаль при вызове модуля (-m ) из командной строки?

Не могу прописать локаль в командной строке:
А как?

в программе, оно конечно locale.setlocale(locale.LC_ALL,….) пропишу, а тут-то как?



(Lubuntu 18, LXTerminal, py 3.6.6)
=========
win7 x64:


C:\Python37-64>py -m calendar 2019 1 -L “german”
usage: calendar.py


calendar.py: error: if –locale is specified –encoding is required

C:\Python37-64>py -m calendar 2019 1
January 2019
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31



Отредактировано Koala (Янв. 5, 2019 15:55:37)

Офлайн

#2 Янв. 7, 2019 15:43:31

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

calendar, datetime, etc: как сделать локаль при вызове модуля (-m ) из командной строки?

Ну начните с того что покатите свой calendar.py
принимает ли он вообще локаль на вход?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Янв. 7, 2019 18:52:08

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2742
Репутация: +  183  -
Профиль   Отправить e-mail  

calendar, datetime, etc: как сделать локаль при вызове модуля (-m ) из командной строки?

> Ну начните с того что покатите свой calendar.py

Он вызывает стандартный модуль.

> Не могу прописать локаль в командной строке

 rodegast@rodegast:~$ python -m calendar -L "ru" -e "UTF-8" 2019 1
    Январь 2019
Пн Вт Ср Чт Пт Сб Вс
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Янв. 7, 2019 18:52:34)

Офлайн

#4 Янв. 8, 2019 15:52:52

Koala
Зарегистрирован: 2015-10-28
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

calendar, datetime, etc: как сделать локаль при вызове модуля (-m ) из командной строки?

да, прикол именно вызвать стандартный модуль из командной строки с нужной локалью. Просто из файла “как программа” все ОК!

Офлайн

#5 Янв. 8, 2019 16:05:59

Koala
Зарегистрирован: 2015-10-28
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

calendar, datetime, etc: как сделать локаль при вызове модуля (-m ) из командной строки?

да, прикол именно вызвать стандартный модуль из командной строки с нужной локалью. Просто из файла “как программа” все ОК!

rodegast@rodegast:~$ python -m calendar -L “ru” -e “UTF-8” 2019 1
Январь 2019
Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

Премного-премного благодарен. Этого то я и хотел.
Работает. Но под Linux.

А под Win - нет, к сожалению.

 I:\[Alex(progress)dict]>python -m calendar -L "ru" -e "1251" 2019 1
Traceback (most recent call last):
  File "C:\Python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python36\lib\calendar.py", line 713, in <module>
    main(sys.argv)
  File "C:\Python36\lib\calendar.py", line 704, in main
    result = cal.formatmonth(options.year, options.month, **optdict)
  File "C:\Python36\lib\calendar.py", line 325, in formatmonth
    s = self.formatmonthname(theyear, themonth, 7 * (w + 1) - 1)
  File "C:\Python36\lib\calendar.py", line 525, in formatmonthname
    with different_locale(self.locale):
  File "C:\Python36\lib\calendar.py", line 495, in __enter__
    _locale.setlocale(_locale.LC_TIME, self.locale)
  File "C:\Python36\lib\locale.py", line 598, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

 J:\...hings.S01E16.720p.WEB.x264-TBS[rarbg]>python -m calendar -L "ru" -e "UTF-8" 2019 1
Traceback (most recent call last):
  File "C:\Python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python36\lib\calendar.py", line 713, in <module>
    main(sys.argv)
  File "C:\Python36\lib\calendar.py", line 704, in main
    result = cal.formatmonth(options.year, options.month, **optdict)
  File "C:\Python36\lib\calendar.py", line 325, in formatmonth
    s = self.formatmonthname(theyear, themonth, 7 * (w + 1) - 1)
  File "C:\Python36\lib\calendar.py", line 525, in formatmonthname
    with different_locale(self.locale):
  File "C:\Python36\lib\calendar.py", line 495, in __enter__
    _locale.setlocale(_locale.LC_TIME, self.locale)
  File "C:\Python36\lib\locale.py", line 598, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting


 I:\[Alex(progress)dict]>python -m calendar -L "deutsch" -e "1251" 2019 1
Traceback (most recent call last):
  File "C:\Python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python36\lib\calendar.py", line 713, in <module>
    main(sys.argv)
  File "C:\Python36\lib\calendar.py", line 704, in main
    result = cal.formatmonth(options.year, options.month, **optdict)
  File "C:\Python36\lib\calendar.py", line 325, in formatmonth
    s = self.formatmonthname(theyear, themonth, 7 * (w + 1) - 1)
  File "C:\Python36\lib\calendar.py", line 525, in formatmonthname
    with different_locale(self.locale):
  File "C:\Python36\lib\calendar.py", line 495, in __enter__
    _locale.setlocale(_locale.LC_TIME, self.locale)
  File "C:\Python36\lib\locale.py", line 598, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

то же со строками:
 python -m calendar -L "rus" -e "1251" 2019 1
 python -m calendar -L "russian" -e "1251" 2019 1
 python -m calendar -L "Russian" -e "1251" 2019 1
 python -m calendar -L "Russian_Russia" -e "1251" 2019 1
 python -m calendar -L "deutsch" -e "1251" 2019 1
 python -m calendar -L "ru" -e "1251" 2019 1
 python -m calendar -L "ru" -e "UTF-8" 2019 1
py -m calendar -L "ru" -e "UTF-8" 2019 1
py -m calendar -L "ru" -e "UTF-8" 2019
python -m calendar -L "deutsch" -e "UTF8" 2019 1
python -m calendar -L "deutsch" -e "UTF-8" 2019 1
python -m calendar -L "deutsch" -e "1251" 2019 1
python -m calendar -L "deutsch" -e "cp1251" 2019 1
python -m calendar -L "deutsch" -e "win1251" 2019 1
python -m calendar -L "deutsch" -e "866" 2019 1
python -m calendar -L "deutsch" -e "cp866" 2019 1

============
по “py” у меня там 3.7, вообще есть оба 32/64
все, устал перебирать.
Пытался понять трэйсбэк, но ума не хватило.
Вся надежда на вас всех….

P.S. кавычки, разумеется, все прямые, как видно в трейсбэках



Отредактировано Koala (Янв. 8, 2019 16:18:41)

Офлайн

#6 Янв. 8, 2019 17:49:07

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

calendar, datetime, etc: как сделать локаль при вызове модуля (-m ) из командной строки?

Koala
Работает. Но под Linux.

А под Win - нет, к сожалению.
У меня на Маке так получилось:
 python -m calendar -L "ru_RU.UTF-8" -e "UTF-8" 2019 1

Отредактировано rami (Янв. 8, 2019 17:50:14)

Офлайн

#7 Янв. 8, 2019 19:33:29

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2742
Репутация: +  183  -
Профиль   Отправить e-mail  

calendar, datetime, etc: как сделать локаль при вызове модуля (-m ) из командной строки?

смотри:

 >>> import locale
>>> locale.getdefaultlocale()
('ru_RU', 'UTF-8')



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Янв. 8, 2019 19:58:33

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

calendar, datetime, etc: как сделать локаль при вызове модуля (-m ) из командной строки?

Так тоже получается:

 python -m calendar -L "ru_RU" -e "UTF-8" 2019 1

Офлайн

#9 Янв. 9, 2019 14:04:50

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

calendar, datetime, etc: как сделать локаль при вызове модуля (-m ) из командной строки?

На маке и на линуксе разумеется что так будет работать!
На виндеразумеется нет.
меняйте код.

Самый разумный вариант ето в вашем скрипте проверять тип ОС
Брать тип ОС и проверять локаль по умолчанию.
Подставлять ее в выводе без доп значений в командной строке.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version