subprocess.Popen с помощью пути unicode

У меня есть имя файла в unicode, которое я хотел бы открыть. Следующий код:

cmd = u'cmd /c "C:\\Pok\xe9mon.mp3"' cmd = cmd.encode('utf-8') subprocess.Popen(cmd) 

возвращается

 >>> 'C:\Pokיmon.mp3' is not recognized as an internal or external command, operable program or batch file. 

даже если файл существует. Почему это происходит?

4 Solutions collect form web for “subprocess.Popen с помощью пути unicode”

Похоже, вы используете Windows и Python 2.X. Используйте файл os.startfile :

 >>> import os >>> os.startfile(u'Pokémon.mp3') 

Неинтуитивно, заставить командную оболочку делать то же самое:

 >>> import subprocess >>> import locale >>> subprocess.Popen(u'Pokémon.mp3'.encode(locale.getpreferredencoding()),shell=True) 

В моей системе кодировка командной оболочки (cmd.exe) – cp437 , но для программ Windows – cp1252 . Popen хотел, чтобы команды оболочки были закодированы как cp1252 . Это похоже на ошибку, и это также кажется исправленным в Python 3.X:

 >>> import subprocess >>> subprocess.Popen('Pokémon.mp3',shell=True) 

Ваша проблема может быть решена с помощью функции smart_str модуля Django.

Используйте этот код:

 from django.utils.encoding import smart_str, smart_unicode cmd = u'cmd /c "C:\\Pok\xe9mon.mp3"' smart_cmd = smart_str(cmd) subprocess.Popen(smart_cmd) 

Здесь вы можете найти информацию о том, как установить Django в Windows. Вы можете сначала установить pip, а затем вы можете установить Django, запустив командную оболочку с правами администратора и выполните следующую команду:

 pip install Django 

Это установит Django в каталоге сайтов-пакетов установки Python.

 >>> subprocess.call(['start', u'avión.mp3'.encode('latin1')], shell=True) 0 

Нет необходимости вызывать cmd если вы используете параметр shell . Правильный способ запуска соответствующей программы – использовать встроенный AFAIK.

Мой 2c, HIH.

Я думаю, что окна используют 16-битные символы, не уверен, что это UCS2 или UTF16 или что-то в этом роде. Поэтому я предполагаю, что это может иметь проблему с UTF8.

  • Вход без подсистемы Python с постоянным выходом в Windows
  • Как открыть файл со стандартным приложением?
  • Python - subprocess.call с использованием cygwin вместо cmd на окнах
  • Как определить путь к php.exe на windows - поиск путей по умолчанию?
  • gi.repository Windows
  • Программа Python работает в IDLE, но не в командной строке
  • Разница между двоичным и текстовым ввода-выводами в python в Windows
  • Как установить python-levenshtein в Windows?
  • PyCrypto не полностью установлен на Windows XP
  • Кросс-компиляция скрипта Python в Linux в исполняемый файл Windows
  • Как установить lxml в Windows
  • Python - лучший язык программирования в мире.