Как использовать модули expanduser и exists вместе

#python #module

#python #модуль

Вопрос:

Сначала рассмотрим код

     user = os.path.expanduser('~AppDataLocalTemp')
    os.path.exists(user,'whatever.txt')
  

Теперь проблема в том, что когда я запускаю его, он говорит:

Обратная трассировка (последний последний вызов):

Файл «pyshell #7», строка 1, в модуле
os.path.exists(пользователь,’whatever.txt ‘)

TypeError: exists() принимает ровно 1 аргумент (задано 2)

Как мне устранить проблему?

Ответ №1:

Используйте os.path.join для соединения двух фрагментов пути вместе:

 os.path.exists(os.path.join(user,'whatever.txt'))
  

Обратите внимание, что r'whatever.txt' это абсолютный путь, поэтому
os.path.join(user,r'whatever.txt') возвращал бы r'whatever.txt' , игнорируя значение user .

Если вы хотите выполнить поиск whatever.txt внутри user каталога, то вам нужно использовать относительный путь, удалив обратную косую черту.

PS: Python присваивает особое значение определенным символам, которым предшествует обратная косая черта. 't' это символ табуляции, например. Обычно вы не хотите, чтобы обратные косые черты интерпретировались таким образом в пути, поэтому — даже если все обратные косые черты в вашем сообщении интерпретируются буквально — обычно хорошей идеей является привыкнуть использовать необработанные строки (например, r'~AppDataLocalTemp' для указания путей, чтобы позже вы не получили неожиданных сюрпризов). Или вместо этого вы могли бы использовать прямые косые черты: '~/AppData/Local/Temp' .