2017-01-26 11 views
0

Я искал автоматический импорт некоторых файлов, но поскольку я нахожусь в Windows, я получил ошибку Unicode (из-за «C: \ Users \ ...»). Я искал исправление этой ошибки и нашел некоторые подсказки (используя r "MyString" или u "MyString" для строк raw и unicode), и я был перенаправлен на эту страницу (https://docs.python.org/3/howto/unicode.html).Python Автоматически игнорировать строку unicode

Но поскольку моя проблема связана с интерфейсом графического интерфейса для автоматического импорта некоторых файлов, я не понял, как это сделать.

Я оставляю вам мои намеки прямо здесь:

file = file.replace('\\', '//') 

file = r"MyFilePath" 

file = u"MyFilePath" 

file = os.path.abspath("MyFilePath") 

file = "MyFilePath".decode('latin1') 
""" isn't correct because a string has no attribute 'decode' of course """ 

Один из этих двоих, кажется, хорошо, но я не знаю, как дать питон понимает, что я хочу, чтобы скопировать путь позади r или u.

Или есть способ сказать Python:

file = StopThinkingWithUnicode("MyFilePath") 

Я также вижу эту ссылку (Deal with unicode usernames in python mkdtemp), но не работает ни (я исправил функцию печати() из-за python2 +0,7 писать и я на 3.5)

Я забыл опубликовать отслеживающий так там:

MyFilePath = "C:\Users\MyUser\Desktop\Projet\05_Statistiques\Data\MyFileName.xlsx" 
    File "<ipython-input-13-d8c2e72a6d3f>", line 1 
    MyFilePath = "C:\Users\MyUser\Desktop\Projet\05_Statistiques\Data\MyFileName.xlsx" 
      ^
    SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape 

Может кто-нибудь помочь мне со мной какие-то намеки или ссылку? Благодарим за помощь.

PS: Я попытался установить в первой строке сценария:

# -*- coding: latin-1 -*- 

(у меня есть * .XL, * .csv, * .sas7bdat, * .txt файлы)

+0

Просто используйте/или \\ вместо \ –

+0

Пользователь не должен этого делать, это одна из основных проблем @JayParikh –

ответ

2

Это очень частая проблема с путями окон. Я подозреваю, что люди натыкаются на него, и выясняют путь, помещая «раздражающие» строчные буквы, соответствующие управляющим последовательностям (\n, \t, \b, \a, \v, \x ...) в верхнем регистре. Он работает, за исключением \U (который является последовательностью Unicode escape-последовательности) и \N.

Реальное решение состоит в использовании сырого префикса для лечения обратных косой черты буквально:

MyFilePath = r"C:\Users\MyUser\Desktop\Projet\05_Statistiques\Data\MyFileName.xlsx" 
      ^

EDIT:. Моя теория о «избегании ошибок прописными подтверждают Проверьте путь в этом вопросе: Largest number of rows in a csv python can handle?

+0

Знаете ли вы способ сортировки concat r + "MyFilePath" (MyFilePath фактически выбран пользователем с исследователем)? (и не типа, кроме меня, как я здесь, ry, если это было непонятно) Я попытался использовать '.join (["r" + MyFilePath]), но из-за ошибки Unicode MyFilePath не обрабатывается –

+0

Nevermind обнаруживает, что tkinter может возвращать путь к файлу и автоматически конвертировать «\» в «/» (http: // stackoverflow.com/questions/3579568/select-a-file-in-python-with-simple-dialog, если кто-то ищет его) Спасибо @ jean-françois Fabre –

+0

@StevenS. Необработанные строки * только * для создания строковых констант в исходном коде. Если ваш пользователь вводит имя файла из графического интерфейса, строка будет правильной. Вероятно, ваша проблема связана с присоединением строк. Покажите ** маленький ** пример того, что вы * на самом деле * пытаетесь сделать, а не смутные жестко закодированные примеры, которые не представляют то, что делает пользователь. –