#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 likeprint(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 для выполнения любого форматирования (экранирования), содержащегося в строке