【问题标题】:pyautogui.write not recognizing \t as tab pressespyautogui.write 未将 \t 识别为制表符
【发布时间】:2021-05-14 08:54:43
【问题描述】:

目标:

我正在尝试使用 openpyxl 从 Excel 单元格中读取产品编号(例如 A11841-2 - -),并使用 pyautogui.write 将其写入数据库窗口的字段中。我的原始代码(https://pastebin.com/6EUFQ09s):

import openpyxl

wb = openpyxl.load_workbook('repack_locns.xlsx')
sheet = wb['r_locn']
sku = sheet.cell(row=2, column=1).value
 
#5 Enter product code into PKMS (cursor should already be where it's supposed to be)
    #and press Enter
import pyautogui
pyautogui.write(sku)

没有将信息写入正确的字段(产品代码 A11841-2 中第一个连字符后的数字 2 - - 应该在后缀字段中,而不是在样式字段中,如1 中所示)。 [注意:我正在使用 Mu 1.1.0.alpha.2 来编写我的代码并从中运行它]

我做了什么:

我首先在 Excel 中查找产品编号中的连字符并将其替换为 \t,从而得到如下产品代码:A11841\t2 \t \t。当我简单地从 excel 单元格中复制产品编号并将其粘贴到代码中时(修改位于第 34 行 https://pastebin.com/sX1SdV8Q):

import openpyxl

wb = openpyxl.load_workbook('repack_locns.xlsx')
sheet = wb['r_locn']
sku = 'A11841\t2 \t  \t'
 
#5 Enter product code into PKMS (cursor should already be where it's supposed to be)
    #and press Enter
import pyautogui
pyautogui.write(sku)

并在每一端加上一个单引号,就可以了!它会在按下制表符时读取\t,并将产品代码输入正确的字段(2)。然后,我使用我的原始代码从具有此格式更改的原始 Excel 文件的副本中读取。

问题:

当产品编号由pyautogui 写入时,它不会将\t 识别为制表符。相反,它只是将它们写成字符 (3)。

我尝试过的:

我使用pyperclip 尝试在我的代码中包含该复制/粘贴步骤,因此我最终可以使其可重复。我使用openpyxl 从Excel 单元格中提取,然后在每一端连接单引号。但是,它没有用;同样的问题出现在pyautogui.write 函数无法将\t 识别为制表符并简单地将它们写为字符。

我使用了type()pyautogui.write 编写的内容和我直接从 Excel 复制/粘贴的内容(然后用单引号括起来)都归类为字符串。不知道为什么 \t 在每种情况下都没有受到相同的对待。

【问题讨论】:

    标签: python openpyxl pyautogui python-3.9


    【解决方案1】:

    经验教训:当您遇到问题时,逐行检查程序中的输出

    这很简单,但我是一个新程序员,所以我没有尽可能快地掌握它,哈哈

    sheet.cell(row=2, column=1).value
    

    原来那段代码吐出'A11841\\t2 \\t \\t' 而不是'A11841\t2 \t \t'。完全有道理,因为它正在从 Excel 单元格中读取文本 A11841\t2 \t \t。我只是使用了join()split() 然后pyautogui.write() 并且成功了!:

    sku = sheet.cell(row=2, column=1).value
    sku_='\t'.join(sku.split('\\t'))
    pyautogui.write(sku_)
    

    正如您在 [1]1 中看到的,pyautogui.write() 正确地将 \t 解释为制表符。

    【讨论】:

      猜你喜欢
      • 2011-02-06
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多