Из сообщения об ошибке видно, что строка хранится в правильном формате (обратные слэши экранируются путем удвоения). Так что, похоже, путь неверный, а файл действительно отсутствует.
С другой стороны, во втором примере, который вы добавили в редактирование, вы используете open('c:\example2\media\uploads\test5.txt')
- это определенно не удастся, потому что \t
является символом табуляции (тогда как все другие комбинации обратной косой черты и буквы не существуют , поэтому обратная косая черта будет обрабатываться так, как если бы она была правильно экранирована). Но вы сказали, что строка была сохранена в переменной, поэтому я не вижу, как этот пример помогает здесь.
Обратите внимание на следующее:
>>> path = 'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\test5.txt'
См? Все обратные слэши конвертируются в экранированные обратные слэши , кроме для \t
, потому что это единственное значение, имеющее особое значение. И сейчас, конечно, этот путь не верен. Поэтому, если переменные, на которые вы ссылаетесь, были определены таким образом (и теперь содержат недопустимые пути), вы ничего не можете сделать, кроме как исправить источник:
>>> path = r'c:\example2\media\uploads\test5.txt'
>>> path
'c:\\example2\\media\\uploads\\test5.txt'
Вы можете подумать, что впоследствии можете «исправить» неисправный путь, как это:
>>> path = 'c:\example2\media\uploads\test5.txt'
>>> path.replace("\t","\\t")
'c:\\example2\\media\\uploads\\test5.txt'
... но есть много других escape-кодов (\b
, \r
, \n
и т. Д.), Так что на самом деле это неосуществимо, особенно потому, что вы будете лечить симптомы, а не исправлять основная проблема.