• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problemy z kodem pythona

Object Storage Arubacloud
0 głosów
455 wizyt
pytanie zadane 3 lutego 2019 w Python przez HelloWorld (: Początkujący (470 p.)

Witajcie.

Zacząłem pisać aplikacje w pythonie.

Tu kod który mam:

#importowanie funkcji
from funkcjie import *
import sys

#Głuwne
menu()
try:
    wybur = int(input())
    if wybur == 1:
        numery = open("numery.txt","r+")
        for line in numery.readlines():
            print(line, end="")

    numery.close()
    sys.exit()
except:
    print("błąd")

zawartość funkcjie.py

def menu():
    print("Menu Głuwne")
    print("-----------")
    print("1.zobacz")
    print("2.nowy")
    print("3.nadpisz")
    print("4.wyjdz")

zawartość numery.txt (tylko na testy)

notatka 1
notatka 2
notatka 3

ma to być swego rodzaju notatnik ale tak chciał bym przenieść kod z if wybur (celowo napisałem przez u otwarte bo tak jest w kodzie) == 1 do pliku z funkcjami.

I mam z tym straszny problem bo jak przerzucam do pliku z funkcjami ten kod to mam błąd podkreśla mi linijkę

w której wywołuję te funkcje.

dziękuję za wszelkie odpowiedzi i na pewno z tym kodem po poprawkach lub przebudowaniu będę się zwracał (jak by co napaście czy to by było dozwolone bo chyba 1 wątek na 1 pytanie więc nie wiem) (:

PS; wiem że nie powinno się pisać polskich znaków ale to tylko na testy będzie wiele poprawek

komentarz 3 lutego 2019 przez kenjiro244 Dyskutant (8,600 p.)
1. Skoro piszesz Gł... to równie dobrze możesz napisać główne.

2. Zamiast pisać wybur lepiej chyba wygląda gdy napiszesz wybor, glowna i tak dalej.

3. W tekście wyświetlanym do użytkownika polskie znaki już chyba mogą albo nawet powinny występować.
komentarz 3 lutego 2019 przez HelloWorld (: Początkujący (470 p.)
korzystam z PyScriptera Alt+Ó jakiś skrót którego nie można wyłączyć tak samo z ł

i z prawię wszystkimi literami
1
komentarz 3 lutego 2019 przez RafalS VIP (122,820 p.)

Głuwne
wybur

Miej litość na Boga!

komentarz 3 lutego 2019 przez Hiskiel Pasjonat (22,830 p.)
@HelloWorld (: przynajmniej tu mogłeś to zmienić.. A ja w Atomie też mam dwa pluginy, które uniemożliwiają pisanie ą i ć, to po prostu kopiuję te znaki.

2 odpowiedzi

+1 głos
odpowiedź 3 lutego 2019 przez Benek Szeryf (91,010 p.)
wybrane 4 lutego 2019 przez HelloWorld (:
 
Najlepsza

Może lepiej byłoby zacząć od tego, by zdefiniować klasę, która reprezentowałaby pojedynczy plik tekstowy. Obiekt pliku przyjmowałby nazwę, tworzyłby pusty plik tekstowy w katalogu roboczym, umożliwiał zapis do tego pliku, a także wyświetlał jego zawartość. Na koniec można by plik usunąć lub zostawić. W ten sposób możesz sobie tworzyć tyle obiektów plików, ile tylko chcesz, a wszystkie będą obsługiwane w ten sam sposób. Prosty przykład znajdziesz tutaj:

#!/usr/bin/env python3

import os


class TextFile:
    """A text file"""

    def __init__(self, filename):
        """Create an empty file"""
        self.filename = filename
        self._create()

    def _create(self):
        open(self.filename, 'a').close()

    def write(self, text):
        """Save a text to the file"""
        with open(self.filename, "w") as f:
            f.write(text)

    def display_lines(self, n_lines):
        """Display the first N lines of the file"""
        try:
            with open(self.filename, "r") as f:
                for _ in range(n_lines):
                    print(next(f).replace('\n', ' ').replace('\r', ''))
        except StopIteration:
            pass

    def remove(self):
        """Remove a file"""
        os.remove(self.filename)


if __name__ == "__main__":
    f = TextFile("pusty")
    f.write(
    """To jest przykladowy\ntekst, ktory zostanie\nzapisany w pliku tekstowym\
    \no nazwie 'pusty'\n"""
    )
    f.display_lines(3)
#   f.remove()

Przypatrz się temu kodowi i spróbuj rozbudować klasę TextFile. Możesz dodać metodę append, która dopisze tekst do istniejącej już zawartości. Przede wszystkim możesz teraz spróbować w sekcji __main__ obsłużyć wiele plików, czyli mieć coś, co przypomina notatnik bez GUI.

0 głosów
odpowiedź 3 lutego 2019 przez izonik Stary wyjadacz (12,560 p.)

Wyszukałem 2 potencjalne problemy.

1.  Mogą być to problemy z formatowaniem kodu. To znaczy używasz na przemian tabulatorów / spacji.

2.  `numery` jest deklarowane tylko jeśli spełniony jest warunek, a ty odwołujesz się do zmiennej z poza warunku.

    if wybur == 1:
        numery = open("numery.txt","r+")
        for line in numery.readlines():
            print(line, end="")
 
    numery.close()

 

komentarz 3 lutego 2019 przez HelloWorld (: Początkujący (470 p.)
numery.close() ... specialnie napisałem poza bo tak by nie wypisałe się cały dokument
1
komentarz 3 lutego 2019 przez izonik Stary wyjadacz (12,560 p.)

Obecne umieszczenie tej linki spowoduje błąd kiedy `wybur != 1`. Powinno być tak

if wybur == 1:
    numery = open("numery.txt","r+")
    for line in numery.readlines():
        print(line, end="")
    numery.close()

a tak przy okazji to w Pythonie pliki zaleca się otwierać tak 

with open("numery.txt", "r+") as file:
    for line in file.readlines():
        print(line, end="")

Jest to nowszy sposób i nie musisz zamykać pliku.

komentarz 3 lutego 2019 przez HelloWorld (: Początkujący (470 p.)
mam jedno zastrzeżenie jak wypisać np jedną linie tym sposobem?
komentarz 3 lutego 2019 przez Secrus Nałogowiec (32,880 p.)
Poczytaj w dokumentacji, Python ma jedną z lepiej napisanych i utrzymanych
komentarz 3 lutego 2019 przez izonik Stary wyjadacz (12,560 p.)

@HelloWorld (:, 

Tak samo jak tym poprzednim. `file` jest tym samym co `numery` tutaj `numery = open("numery.txt","r+")`.

 

Podobne pytania

0 głosów
1 odpowiedź 5,447 wizyt
pytanie zadane 27 listopada 2020 w Python przez xBatchowy Początkujący (320 p.)
0 głosów
1 odpowiedź 116 wizyt
pytanie zadane 3 listopada 2023 w Python przez Pecze Nowicjusz (120 p.)
+1 głos
3 odpowiedzi 264 wizyt
pytanie zadane 10 listopada 2022 w Python przez niezalogowany

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...