2013-03-22 4 views
-2

У меня есть программа, запущенная на моей локальной машине, которая использует некоторые файлы. Я создаю ссылку на файлы, используя: 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

+0

Пожалуйста, покажите, как вы вызываете вторую программу. –

+0

Я отредактировал мой вопрос, спасибо. –

+0

Windows не использует двойную обратную косую черту; Строковые литералы Python. То, что вы печатаете, не является строковым литералом; это должен быть совершенно разумный путь к Windows. Оставьте «печать», и вы увидите ее в строковой литеральной форме с двойной обратной косой чертой. –

ответ

-1

Try:

print os.path.join(tempfile.gettempdir(), "test.txt").replace('\\\\','\\\\\\\\') 
Смежные вопросы