我正在尝试使用pyautogui记录我的鼠标位置的输出坐标或X和Y坐标,并将它们写入csv文件。每当我运行代码时,它都会在单独的列中打印X和Y,这样很好,但是在X下方的左上角显示“ True”,然后在Y列下方的一行也显示“ True”。我真的不明白为什么会这样。
import pyautogui, sys
import numpy as np
import csv
try:
while True:
x, y = pyautogui.position()
positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
print(positionStr)
except KeyboardInterrupt:
print('\n')
while True:
with open('Mousemovement.csv', mode = 'w') as csv_file:
fieldnames = ['X', 'Y']
writer = csv.DictWriter(csv_file, fieldnames = fieldnames)
writer.writeheader()
writer.writerow({'X': x in pyautogui.position()})
writer.writerow({'Y': y in pyautogui.position()})
答案 0 :(得分:0)
x in pyautogui.position()
使用Python in
运算符。这是对membership
的测试-基本上,x
中是否存在pyautogui.position()
。这将返回一个boolean
值(True
或False
)。然后将此值写入您的CSV文件。
此外,您每个循环调用writerow
两次,这就是为什么Y值出现在X之下的原因。
最后,您将多次打开和写入CSV文件。您只应打开一次,编写标题,然后进入循环以编写值。
您只需要这样重写代码:
with open('Mousemovement.csv', mode = 'w') as csv_file:
fieldnames = ['X', 'Y']
writer = csv.DictWriter(csv_file, fieldnames = fieldnames)
writer.writeheader()
while True:
x, y = pyautogui.position() # Get the position into x and y
writer.writerow({'X': x, 'Y': y}) # Pass a single dictionary, so one row is printed