Разные питоны ведут себя среди разных SSH логинов?
У меня есть некоторые NTFS-диски, смонтированные в CentOS, и некоторые из них называются по-китайски. Я вхожу в Centos через Mac iTerm
, но когда в моем офисе Mac, ls
показывает правильное китайское имя файла, но в домашнем Mac ls
просто покажи что-то вроде ??????????????????
и, самое главное, мой скрипт Python не может обрабатывать эти файлы (UnicodeDecodeError
), когда я запускаю его на своем домашнем Mac, но когда он запускается на офисном Mac, он работает хорошо.
Почему это случилось? Как это исправить?
За исключением некоторых настроек ENV для двух разных Mac, сценарий python одинаков, а диски также одинаковы. Зачем получать исключения при запуске на домашнем Mac? также связано с некоторыми ENV?
1 ответ
Хорошо, я получил ответ. Логин ssh не принимает LC_ALL
на целевой машине, даже если на этой машине была установлена среда. Итак, при запуске скрипта Python, LC_ALL
Значение не отправлять в сценарий Python, и не может обрабатывать эти китайские именованные файлы.
С точки зрения C, main()
Функция обычно получает 2 параметра:
int main(int argc, char *argv[])
но на самом деле есть еще один:
int main(int argc, char *argv[], char *env[])
и вдруг я нахожу ответ.
Чтобы избежать повторения той же проблемы, вы можете добавить export
в ваш стартовый скрипт или набор sshd_config