В Python Получение неправильной папки с помощью pathlib (\ u2069) - PullRequest
0 голосов
/ 19 мая 2019

Я не могу заставить следующий код работать на моем Mac, и я не знаю почему.

import os
from pathlib import Path   
list_file_name     = 'listoffiles.txt'
list_of_files_path = Path('Users⁩/jose⁩/CODE⁩/OPS')
list_file_with_path= os.path.join (list_of_files_path,list_file_name )
print(list_of_files_path)

результат: Users / jose / CODE / OPS / listoffiles.txt, который кажетсявсе будет в порядке

но когда я продолжаю читать текстовый файл в список:

lineList = [line.rstrip('\n') for line in open(list_file_with_path)]

я получаю: FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'Users\ u2069 / jose \ u2069 / CODE \ u2069 / OPS / listoffiles.txt '

Я не понимаю, как мне нужно вызвать путь, чтобы получить его правильно.

НекоторыеПомогите?что я делаю не так?

ПРИМЕЧАНИЯ: исследуя проблему в Интернете, я обнаружил пару страниц, рассказывающих, что «старый» способ работы с путями в библиотеке os, тогда как «новый и хороший» этоpathlib из питона 3.4.Это так.Должен ли я забыть ОС?

1 Ответ

2 голосов
/ 19 мая 2019

Строка в приведенном выше примере кода содержит символы Unicode, непосредственно введенные в строковую константу. Я вырезал твой код и увидел результат:

from pathlib import Path   
list_of_files_path = Path('Users⁩/jose⁩/CODE⁩/OPS')
print(repr(list_of_files_path))

Выход:

WindowsPath('Users\u2069/jose\u2069/CODE\u2069/OPS')

Мой редактор даже отображает их:

editor with pictographs of control characters

U + 2069 - невидимый двунаправленный символ управления текстом POP DIRECTIONAL ISOLATE. Может быть, ваш редактор был в режиме двунаправленного текста, когда он печатался? Чтобы исправить, введите строку заново и через repr() убедитесь, что больше нет управляющих символов.

...