Как напечатать путь в Python?

#python #python-3.x #printing #pyautogui

#python #python-3.x #печать #пяавтоги #pyautogui

Вопрос:

Я хочу создать скрипт, открыть CMD, а затем ввести путь:

 import pyautogui as pag
pag.hotkey('win','r')     
pag.typewrite('cmd')
pag.press('enter')
pag.typewrite('C:UsersXYAppData')
  

это не работает. Итак, я попробовал это:

 import pyautogui as pag
pag.hotkey('win','r')
pag.typewrite('cmd')
pag.press('enter')
pag.typewrite('C:\Users\huba5_000\AppData\')
  

Однако это ввело C:?Users?XY?AppData?

Я хочу, чтобы он вводил C:UsersXYAppData . Знаете ли вы, что я должен написать вместо «\»?

Заранее благодарю вас!

Комментарии:

1. Я не использовал pag, но в целом вы можете попробовать необработанные строки. print(r"C:UsersXYAppData") работает обратите внимание на букву «r» перед строкой. Это означает, что строка должна быть необработанной и именно такой, какую вы вводите.

2. @MooingRawr обратите внимание, что это не работает, если путь заканчивается на a '' , поскольку некоторые элементарные экранирования строки все еще имеют место

3. @Aaron, верно, но он мог бы заполнить пробел, если он заканчивается символом '' so like print(r"C:UsersXYAppData ") , который вернется C:UsersXYAppData с символом пробела. Я думаю, это обходной путь из «

4. хм… он работает с r перед строкой, но все равно пишет ‘?’ вместо »

Ответ №1:

когда строка считывается из input() или из текстовых полей в графическом интерфейсе (в общем случае .. idk о pag), автоматически вводятся дополнительные косые черты. Однако они не вводятся автоматически для строковых литералов в вашем коде и должны быть экранированы (отсюда двойная косая черта). Вот короткий сеанс консоли (python 2.7), показывающий эту функциональность:

 >>> s = raw_input('enter a path: ') #change raw_input to input() for python 3.x
enter a path: usrvar
>>> s
'\usr\var'
>>> print s
usrvar  

обратите внимание, что когда я ввел путь, я не экранировал свои обратные косые черты, но когда я вызываю внутреннее представление s , они были введены для меня. когда мне нужен выходной формат, я вызываю print для выполнения любого форматирования (экранирования), содержащегося в строке