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

Problemy z kodem pythona

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
613 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 (92,970 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,970 wizyt
pytanie zadane 27 listopada 2020 w Python przez xBatchowy Początkujący (320 p.)
0 głosów
2 odpowiedzi 786 wizyt
pytanie zadane 28 stycznia 2021 w C i C++ przez paluch Nowicjusz (120 p.)
0 głosów
1 odpowiedź 828 wizyt
pytanie zadane 25 kwietnia 2017 w C i C++ przez jekjekjoker Nowicjusz (220 p.)

93,189 zapytań

142,204 odpowiedzi

322,028 komentarzy

62,517 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2817p. - dia-Chann
  2. 2769p. - Łukasz Piwowar
  3. 2759p. - Łukasz Eckert
  4. 2738p. - CC PL
  5. 2704p. - Tomasz Bielak
  6. 2678p. - Łukasz Siedlecki
  7. 2666p. - rucin93
  8. 2485p. - Marcin Putra
  9. 2418p. - Michal Drewniak
  10. 2367p. - Adrian Wieprzkowicz
  11. 2317p. - Mikbac
  12. 2239p. - Michał Telesz
  13. 2156p. - Anonim 3619784
  14. 1733p. - rafalszastok
  15. 1628p. - Dominik Łempicki (kapitan)
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...