Wątek przeniesiony 2023-02-20 16:54 z Społeczność przez furious programming.

Zapisanie aktualnego czasu w pliku tekstowym

0

Witam,

W ostatnim czasie zmieniłem kierunek studiów, który diametralnie różni się od wcześniejszego. Mam na zaliczenie do stworzenia program odczytujący aktualną datę systemową i wpisujący ją do pliku tekstowego ‘data.txt’ za pomocą PYTHONA. Męczę się z tym od kilku dni i kaplica, uprzejmie proszę o pomoc i wytłumaczenie.

3
Nixan1662 napisał(a):

Witam,

W ostatnim czasie zmieniłem kierunek studiów, który diametralnie różni się od wcześniejszego. Mam na zaliczenie do stworzenia program odczytujący aktualną datę systemową i wpisujący ją do pliku tekstowego ‘data.txt’ za pomocą PYTHONA. Męczę się z tym od kilku dni i kaplica, uprzejmie proszę o pomoc i wytłumaczenie.

Pokaż te próby, omówimy, skorygujemy

0
import datetime
x=datetime.datetime.now()
print(x)
tekst=x
plik=open("data.txt", "w", encoding="utf-8")
plik.write(tekst)
plik.close()

Nie rozumiem również czemu nigdzie w pythonie nie mam zakładki "save file"

2
Nixan1662 napisał(a):
import datetime
x=datetime.datetime.now()
print(x)
tekst=x
plik=open("data.txt", "w", encoding="utf-8")
plik.write(tekst)
plik.close()

Nie rozumiem również czemu nigdzie w pythonie nie mam zakładki "save file"

Jak uruchomisz ten program, to dostaniesz wyjątek:

Traceback (most recent call last):
  File "C:\Users\Riddle\file.py", line 6, in <module>
    plik.write(tekst)
TypeError: write() argument must be str, not datetime.datetime

Wynika to z tego, że domyślnie print(), kiedy dostanie obiekt typu innego niż str, to rzutuje go właśnie na str. Jednak .write() już tego nie robi, i zamiast tego dostaniesz wyjątek.

Odpowiedzią tutaj jest zrobić np coś takiego: plik.write(str(tekst)), oczywiście to ma taką wadę, że nie definiujesz sam formatu takiej daty; tylko polegasz na formacie systemowym - dlatego właśnie dostajesz wyjątek, żebyś mógł sam zdefiniować format daty.

0
Riddle napisał(a):

Wynika to z tego, że domyślnie print(), kiedy dostanie obiekt typu innego niż str, to rzutuje go właśnie na str. Jednak .write() już tego nie robi, i zamiast tego dostaniesz wyjątek.

Odpowiedzią tutaj jest zrobić np coś takiego: plik.write(str(tekst)), oczywiście to ma taką wadę, że nie definiujesz sam formatu takiej daty; tylko polegasz na formacie systemowym - dlatego właśnie dostajesz wyjątek, żebyś mógł sam zdefiniować format daty.

Mam jeszcze zapytanie, poprawiłem tak jak wskazałeś. Gdzie stworzył się ten plik?

1
Nixan1662 napisał(a):
Riddle napisał(a):

Wynika to z tego, że domyślnie print(), kiedy dostanie obiekt typu innego niż str, to rzutuje go właśnie na str. Jednak .write() już tego nie robi, i zamiast tego dostaniesz wyjątek.

Odpowiedzią tutaj jest zrobić np coś takiego: plik.write(str(tekst)), oczywiście to ma taką wadę, że nie definiujesz sam formatu takiej daty; tylko polegasz na formacie systemowym - dlatego właśnie dostajesz wyjątek, żebyś mógł sam zdefiniować format daty.

Mam jeszcze zapytanie, poprawiłem tak jak wskazałeś. Gdzie stworzył się ten plik?

W bieżącym katalogu w którym uruchomiłeś program. Otwierając plik open("data.txt", "w", encoding="utf-8") podałeś ścieżkę względną; a ścieżka względna niejawnie jest dopasowana do bieżącego katalogu roboczego.

0
from datetime import datetime

current_date = datetime.now()

with open("data.txt", "w+") as file:
    file.write(str(current_date))

Nie wiem co z ta data jest nie tak, mój kolega admin z pracy też szukał po SO jak to zrobic i mu wyszły z dwie zmienne globalne i logika jakby to był jakiś bootloader.
@Nixan1662 powyżej masz kod który realizuje Twoje zadanie, poczytaj w dokumentacji Pythona co jest czym w powyższym przykładzie.
Podpowiedź:
https://docs.python.org/3/library/datetime.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1