\u
имеет особое значение в строковом литерале Python; он обозначает символ Юникода. Точно так же \f
, что означает форму.
Вы должны будете использовать raw-string:
logs_dir = os.path.dirname(r'C:\Users\user1\Desktop\folder\main\Logs')
или forwardslashes:
logs_dir = os.path.dirname('C:/Users/user1/Desktop/folder/main/Logs')
для того, чтобы Python интерпретировать их как таковые. Вы также можете удвоить каждую обратную косую черту:
logs_dir = os.path.dirname('C:\\Users\\user1\\Desktop\\folder\\main\\Logs')
но это довольно утомительно.
Кроме того, вы должны удвоить обратную косую черту для каждого '\'
поскольку строковые литералы не может закончиться в один \
. Но это не очень надежное решение. Лучший подход для построения путей является использование os.path.join
:
rel_path = os.path.join('\\', month, filename + '.txt')
Затем, вы можете заменить каждый '\\'
с os.sep
как сказал @helloV в своем ответе. Это обеспечит, чтобы ваш код создавал правильные пути как в системах Windows, так и в системах * nix.
Вам не нужен ' '\\'' 'между month' и' filename' в вызове 'os.path.join'. – tmr232
Спасибо, я просто копировал код OP и пропустил это. – iCodez
Спасибо! Мне пришлось добавить двойную обратную косую черту в конце 'logs_dir = os.path.dirname (r'C: \ Users \ user1 \ Desktop \ folder \ main \ Logs \\ ')' и все работало отлично! – Shad