У меня есть программа, запущенная на моей локальной машине, которая использует некоторые файлы. Я создаю ссылку на файлы, используя: os.path.join(tempfile.gettempdir(), 'filename.txt')
python и windows double обратная косая черта
После этого я запускаю программу, которая принимает некоторые параметры --log-file filepath
, где путь к файлу - один из файлов, которые я только что объяснил выше.
На моей машине python создает обратную косую черту для путей, но не двойную обратную косую черту, и программа жалуется, потому что она считается escape-символом и должна быть двойной обратной косой чертой.
Есть ли стандартный способ убедиться, что я получаю рабочий путь с двойной обратной косой чертой в python? Я мог бы использовать регулярное выражение, но я бы предпочел что-то похожее на то, что дает os.
. Может быть, я что-то упустил.
Я звоню программу с помощью subprocess.Popen
:
self._proc = subprocess.Popen(command.split(' '))
где command
что-то вроде pcix.exe --log-file file_path
Кроме того, работает тест на моей консоли показывает, что мой питон не производит двойной обратный слэш для пути:
Оставляя приказ t дает тот же путь:
>>> os.path.join(tempfile.gettempdir(), "test.txt")
c:\users\manilo~1\appdata\local\temp\test.txt
Любая идея, почему?
P.S. Платформа я бегу это CPython
Пожалуйста, покажите, как вы вызываете вторую программу. –
Я отредактировал мой вопрос, спасибо. –
Windows не использует двойную обратную косую черту; Строковые литералы Python. То, что вы печатаете, не является строковым литералом; это должен быть совершенно разумный путь к Windows. Оставьте «печать», и вы увидите ее в строковой литеральной форме с двойной обратной косой чертой. –