Разбор комбинации обратного слэша и косой черты в имени файла

Я получаю имя файла из api в этом формате, содержащем сочетание / и \ .

infilename = ‘c: / mydir1 / mydir2 \ mydir3 \ mydir4 \ 123xyz.csv’

Когда я пытаюсь разобрать структуру каталогов, \ после чего символ преобразуется в один символ.

Есть ли способ, чтобы получить каждый компонент правильно?

Я уже пробовал:

 path.normpath didn't help. infilename = 'c:/mydir1/mydir2\mydir3\mydir4\123xyz.csv' os.path.normpath(infilename) out: 'c:\\mydir1\\mydir2\\mydir3\\mydir4Sxyz.csv' 

это не видно в вашем примере, но написав это:

 infilename = 'c:/mydir1/mydir2\mydir3\mydir4\123xyz.csv' 

это не очень хорошая идея, потому что некоторые из строчных (и нескольких прописных) букв интерпретируются как escape-последовательности, если они следуют за антиспашем. Известные примеры: \t , \b , есть и другие. Например:

 infilename = 'c:/mydir1/mydir2\thedir3\bigdir4\123xyz.csv' 

дважды терпит неудачу, потому что 2 символа интерпретируются как «вкладка» и «обратное пространство».

Когда вы имеете дело с буквальным пути в стиле Windows (или регулярными выражениями), вам нужно использовать исходный префикс, и лучше нормализовать свой путь, чтобы избавиться от косой черты.

 infilename = os.path.normpath(r'c:/mydir1/mydir2\mydir3\mydir4\123xyz.csv') 

Однако исходный префикс применяется только к литералам . Если появляется возвращаемая строка, при печати repr(string) , как 'the\terrible\\dir' , тогда в строку уже добавлены символы табуляции, и вы ничего не можете сделать, кроме паршивой пост-обработки.

используйте r перед строкой, чтобы обработать ее как необработанную строку (то есть без форматирования строки).

например

 infilename = r'C:/blah/blah/blah.csv' 

Подробнее здесь: https://docs.python.org/3.6/reference/lexical_analysis.html#string-and-bytes-literals

Вместо синтаксического анализа \ try parsing по \\ . Обычно вам нужно убежать от \ так что \ символ на самом деле \\ .

  • Самый простой способ игнорировать пустые строки при чтении файла в Python
  • Каков самый быстрый способ открыть URL-адреса на новых вкладках через Selenium-Python?
  • Как определить, является ли переменная Python функцией?
  • Для чего используется функция id ()?
  • Как я могу сделать один файл python другим?
  • Каково формальное различие между «печатью» и «возвратом»?
  • Почему некоторые встроенные функции Python имеют пропуск?
  • Вызов функции модуля с использованием его имени (строки)
  • Как ускорить массовую вставку в MS SQL Server из CSV, используя pyodbc
  • Что означает% s в строке формата python?
  • тип намека в classе
  • Давайте будем гением компьютера.