Как сослаться на файл в рабочей области, в подпроцесс Popen?

В настоящее время у меня есть программа, которая может загрузить изображение из Интернета и сохранить его в том же каталоге, в котором сохранен проект Python.

я использую

r=subprocess.Popen(["rundll32.exe","shimgvw.dll,ImageView_Fullscreen","C:\\pic.jpg"])
time.sleep(3)
r.kill()

чтобы просмотреть изображение, а затем закрыть его через некоторое время (что важно), однако, когда я изменяю путь с "C:\\pic.jpg"до"C:\Users\...\assignment1\pic.jpg"Я получаю ошибку Юникода в пути, и если я изменю начало пути на"C:\\"(с двумя косыми чертами, не могу отформатировать:(), тогда я не получаю ошибки, но файл просто не открывается.

Всегда ли нужно ссылаться на путь из C:\ или есть какое-то умное слово, которое идет прямо в каталог по умолчанию?

urlretrieve("%s?%s" % (url,parameters),"pic.jpg")

этот метод используется для сохранения файла, который сохраняется в каталоге по умолчанию

1 ответ

Решение

Вы получаете ошибку из-за \U в вашей строке, которую Python пытается интерпретировать как \Uxxxxxxxx escape-последовательность (где xs - шестнадцатеричные цифры для 32-битного порядкового номера Unicode). Проблема, которую вы получаете после удвоения первой обратной косой черты, вероятно, связана с какой-то другой escape-последовательностью позже в пути (\a например, становится символом ASCII "BEL").

Вам нужно либо избежать всех обратных косых черт, либо сказать Python не искать escape-последовательности, сделав путь "необработанным" строковым литералом: r"C:\Users\...\assignment1\pic.jpg"

Другие вопросы по тегам