Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Python - odczyt zmiennej z pliku .txt
#1
0
Dzień dobry
Mam pewien problem we fragmencie kodu. Plik importowane.txt zawiera dane o współrzędnych, więc wygląda przykładowo tak:
Kod:
(451,254)
Chciałbym zaimportować te dane jako zmienna do innego programu pythona o rozszerzeniu .py. Wygląda to tak:
Kod:
import pyautogui
f=open('importowane.txt', 'r')
zmienna=f.read()
Teraz chciałbym zaimportowaną zmienną wykorzystać w poleceniu:
Kod:
pyautogui.moveTo((zmienna), duration=1)
Niestety, coś takiego nie jest możliwe. Efekt jest zawsze taki sam:
Kod:
    pyautogui.moveTo((zmienna), duration=1)
  File "/usr/local/lib/python3.8/dist-packages/pyautogui/__init__.py", line 586, in wrapper
    returnVal = wrappedFunction(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pyautogui/__init__.py", line 1268, in moveTo
    x, y = _normalizeXYArgs(x, y)
  File "/usr/local/lib/python3.8/dist-packages/pyautogui/__init__.py", line 649, in _normalizeXYArgs
    location = locateOnScreen(firstArg)
  File "/usr/local/lib/python3.8/dist-packages/pyautogui/__init__.py", line 175, in wrapper
    return wrappedFunction(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pyautogui/__init__.py", line 213, in locateOnScreen
    return pyscreeze.locateOnScreen(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pyscreeze/__init__.py", line 372, in locateOnScreen
    retVal = locate(image, screenshotIm, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pyscreeze/__init__.py", line 352, in locate
    points = tuple(locateAll(needleImage, haystackImage, **kwargs))
  File "/usr/local/lib/python3.8/dist-packages/pyscreeze/__init__.py", line 261, in _locateAll_python
    needleFileObj = open(needleImage, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '(451,254)\n'
Próbowałem różne rzeczy. Importowałem to jako listę:
Kod:
f=open('importowane.txt', 'r')
zmienna=f.read()
zmienna=[zmienna]


for i in zmienna:
    pyautogui.moveTo(zmienna[0], duration=1)
także próbowałem deklarować to jako str. Wszystko na nic. Zawsze taki sam efekt. O tyle tego nie rozumiem że jeśli w powyższym programie dodam zaraz przed pętlą for linię:
Kod:
print(zmienna[0])
To otrzymuję poprawną wartość zmienniej, tzn. taką, jaka powinna być na wejściu do polecenia pyautogui.moveTo:
Kod:
(451,254)
Teraz coś czego najbardziej nie rozumiem - kiedy tylko przekopiuję wartość tej zmiennej i zadeklaruję bezpośrednio, tzn.: program ma postać:
Kod:
import pyautogui
zmienna=[(451,254)]

for i in zmienna:
    pyautogui.moveTo(zmienna[0], duration=1)
to wszystko działa bez najmniejszego problemu. Program importuje z podanego pliku dokładnie taką samą wartość, a mimo to program nie chce się uruchomić dopóki zmienna nie jest bezpośrednio zadeklarowana.
Czy ktoś zna odpowiedź na pytanie, dlaczego tak się dzieje?
Odpowiedz


Skocz do:




Użytkownicy przeglądający ten wątek: 2 gości