Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem w pythonie


Rekomendowane odpowiedzi

Opublikowano

Jest to kolejny temat pytań o pythonie, teraz będę wszystkie moje problemy zgłaszał do tego tematu, więc lookajcie :D

 

Zatem:

1. Jak mam :

def __Save(self):
	wiersz = linecache.getline('dane.txt', (1))	
	zrodlo = open('dane.txt').readlines()
	cel = open('dane.txt', 'w')
	for s in zrodlo:
		cel.write(s.replace(wiersz, '%s\t%s\n' % (1Line, 2Line)))
		self.PopupNotifyMessage("Pomyślnie zapisano dane.")					

def __Load(self):
	if os.path.exists("dane.txt"):
	    info = open("dane.txt", "r").read().split()
		self.1Line.SetText(info[2])
		self.2Line.SetText(info[3])
	else:
		self.PopupNotifyMessage("Brak pliku: dane.txt")

 

Opis problemu

Jak wczytuje dane z pliku i gdy one tam są to jest OK.

Gdy nie ma pliku to pojawia się okno z treścią "Brak pliku..." to też OK

ALE gdy mam w danych napis "Brak" to wczytuje i w rubryce piszę "Brak", a chce tak mieć by jak jest wpis "Brak" to żeby pojawiło się okno z treścią "Brak danych".

 

 

Jak coś nie jasne to wytłumaczę!

Opublikowano

jeżeli to ma być baza danych to skorzystaj z plików binarnych i modułu pickle

jeżeli nie no to musisz po prostu parsować plik...

Cytat

 

Orientacja seksualna polega na tym, że jeden mężczyzna lubi blondynki, drugi szatynki, że jedna pani woli umięśnionych mężczyzn a inna chudych intelektualistów. Homoseksualizm nie jest orientacją jest chorobą za którą homoseksualiści nie ponoszą odpowiedzialności. Pewna grupa ludzi rodzi się upośledzona fizycznie, na przykład bez ręki ale czy to znaczy, że wszystkim zdrowym powinniśmy też obcinać ręce? Nie, powinniśmy zapewnić im protezy. Obowiązkiem państwa jest zapewnienie homoseksualistom, jak wszystkim upośledzonym fizycznie czy psychicznie profesjonalnej opieki medycznej.

  • 4 tygodnie później...
Opublikowano

wiem, że temat z tamtego miecha ale jak zrobić by ten tekst był brany właśnie z pliku "dane.txt"?

		 def __Load(self):
			tekst = "Brak"
			zrodlo = open("passy.txt").readlines()   	
			if(tekst == "Brak") in zrodlo:
				self.PopupNotifyMessage("Brak pliku: dane.txt")
			else:
				info = open("dane.txt", "r").read().split()
					self.1Line.SetText(info[2])
					self.2Line.SetText(info[3])

 

jak to zrobić by to działało??

Opublikowano

from win32api import *
import linecache
wiersz = linecache.getline("nazwa_twojego_pliku.txt", numer_linijki) #pobranie CAŁEJ linijki tekstu z Twojego pliku

if(wiersz[:4] == "Brak"):
   MessageBox(0,"Brak danych", "Komunikat", 0) # jeśli pierwsze 4 znaki to "Brak" wtedy wyświetla komunikat
else:
   print wiersz

 

Opis:

wiersz = linecache.getline("passy.txt", 1) - wtedy takie coś pobiera PIERWSZĄ linijkę Twojego tekstu.

Sprawdzasz czy w tej linijce znajduje się napis "Brak": if(wiersz[:4] == "Brak"): i wyświetlam komunikat

 

from win32api import *
import linecache
def __Load(self):
   zrodlo = linecache.getline("passy.txt", 1)
   if(zrodlo[:4] == "Brak"):
	 MessageBox(0,"Brak danych", "Komunikat", 0)
   else:
    #dalsza część Twojego programu

 

Z tym fragmentem tyle moge zrobić, jeśli Ci sie nie uda, wyślij mi source na pw może pomogę jeśli bd umieć, jeśli to coś większego to drobna opłata ;)

Opublikowano

No to działa ale mam teraz inny problem, otóż jeżeli w pierwszym wierszu jest Brak, i w programie zastępuje "brak" na np. "OK123" i usuwam napis. Potem biorę load to nadal pisze "Brak danych", chociaż w pliku już jest zmienione na te "OK123". Jak zrobić, że zanim się wczyta, to Odświeżyć. Bo jak na nowo uruchamiam program to jest wszystko dobrze.

Opublikowano

Proszę:

 

	def __Save(self):
	1 = self.1EditLine.GetText()
	2 = self.2EditLine.GetText()


	wiersz = linecache.getline("dane.txt", (9))	
	zrodlo = open("dane.txt").readlines()
	cel = open("dane.txt", "w")
	for s in zrodlo:
		cel.write(s.replace(wiersz, '%s\t%s\n' % (1, 2)))
		self.PopupNotifyMessage("Pomyślnie zapisano dane.")							

def __Load(self):
	zrodlo = linecache.getline("dane.txt", 9)
	if(zrodlo[:4] == "Brak"):
		self.PopupNotifyMessage("Brak danych.")
	else:
		logininfo = open("dane.txt", "r").read().split()
		self.2Line.SetText(logininfo[16])
		self.1EditLine.SetText(logininfo[17])

Opublikowano

Nie widzę u Ciebie przyczyny, mi taki kod [przenalizuj sobie] działa:

from win32api import *
import linecache
def changeText(filename):
wiersz = linecache.getline('passy.txt', id)
zrodlo = open('passy.txt').readlines()
cel = open('passy.txt', 'w')
text = "qwe\n"
for s in zrodlo:
	cel.write(s.replace(wiersz, text))
cel.close() #staraj się zamykać plik

changeText("passy.txt")
wiersz = linecache.getline("passy.txt", 1)
if wiersz[:4] == "Brak":
MessageBox(0, "Brak danych...", "Komunikat", 0)
else:
print 'Wiersz: ', wiersz

 

1 = self.1EditLine.GetText()

PAMIĘTAJ że cyfra/liczba NIE może być zmienną. Musisz zastosować nazwę np: jeden, zmienna czy coś.

 

#Edit: Do czego to ma służyć ? :

'%s\t%s\n'%(1,2))

Opublikowano

Chodzi mi o to, że jak się zmieni słowo Brak na np OK123 to on nadal ma w pamięci, że tam jest brak i pokazuje mi komunikat Brak danych. Chociaż są dane.

Opublikowano

1. Upewnij się że na pewno Ci zmienia ten tekst.

2. Podaj [cały, działający] tekst [na pw jeśli nie chcesz udostępniać] jeśli potrafię to Ci naprawię, bo nie widzę błędu w takim fragmencie.

Opublikowano

Taa, ale to taki dodatek do programu, a cały plik ma 1634 linijki więc nie ma sensu. A tekst mi się zmienia. Jest jakaś komenda która odświeża? reload lub coś w tym stylu.

Opublikowano

Jeśli zmienia Ci tekst to w kodzie masz wszystko ok (oprócz tego że cyfry wziąłeś jako zmienne). Więc w programie musisz gdzieś wywoływać ten kod (z tego co widzę klasę).

Pokaż deklaracje np masz coś takiego:


import linecache
class MojaKlasa(object):
def __init__(self):
	sefl.GetTextLine = linecache.getline("passy.txt",1)

def Load(self):
	#costam
def Save(self):
	#costam

#kod jakistam chodzi mi o wywołanie pod spodem
x = MojaKlasa();
x.Load()
x.Save()

 

@DOWN:

BO to jest pseudokod :D

Opublikowano

Spróbuj tak:

def __Save(self):
			1 = self.1EditLine.GetText()
			2 = self.2EditLine.GetText()


			wiersz = linecache.getline("dane.txt", (9))	
			zrodlo = open("dane.txt").readlines()
			cel = open("dane.txt", "w")
			for s in zrodlo:
					x = s.replace(wiersz, '%s\t%s\n' % (1, 2))
					cel.write(x)
					self.PopupNotifyMessage("Pomyślnie zapisano dane.")

 

U mnie działa (za pierwszym razem gdy uruchomisz bedzie "Brak danych" za drugim zaś powinno już smigać)

 

Czyli to:

 

cel.write(s.replace(wiersz, '%s\t%s\n' % (1, 2)))

Zastąp tym:

x = s.replace(wiersz, '%s\t%s\n' % (1, 2))

cel.write(x)

 

#########EDIT::::U mnie zmienia tylko wybraną linijkę właśnie sprawdziłem -,-

Opublikowano

Teraz tekst w dane.txt się usuwa cały ;/ a co do tego

U mnie działa (za pierwszym razem gdy uruchomisz bedzie "Brak danych" za drugim zaś powinno już smigać)

to właśnie nie chce drugi raz uruchamiać.
Opublikowano

REFRESH. Pomoże ktoś?

 

###Edit: Inne rozwiązanie mam ALE!

 

Jak zrobić enter w dialogu? Jak zrobiłem komunikat z 2 wyrazami to jak zrobić by jeden z nich był na dole, bo '\n' nie działa, pojawia się kwadrat ;/

  • 2 tygodnie później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...