Возможно, это проблема кодирования, когда ваш ввод не совсем соответствует тому, что файловая система ожидает при выводе. Сначала вам нужно сообщить Python, какую кодировку использует ваш ввод, а затем какую кодировку ожидает вызов popen()
.
>>> filename = "C:\\testüüüdirectory\\".decode("utf-8")
>>> res = os.popen("dir " + filename.encode("cp1252"))
Возможно, вам придется поэкспериментировать с различными комбинациями кодирования, чтобы получить правильную пару. UTF-8, UTF-16 и cp1252 являются наиболее вероятными кандидатами для Windows, но ваша система может быть настроена на использование другой кодировки . Если вам действительно повезет, os.popen()
может даже принять строку Unicode, в этом случае шаг encode()
может быть пропущен.
Если вам действительно не повезло, канонизация символов может стать проблемой. Есть два возможных представления «ü» в Unicode: U + 00FC или U + 0075 U + 0308; вторая буква "U" с комбинированным диарезом, а первая - предварительно комбинированная. Если Windows ожидает одно, а encode()
производит другое, вам, возможно, придется немного поработать, чтобы получить правильную строку.