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

Python dodawanie zwroconego stringa z funkcji do lancucha znakow

Object Storage Arubacloud
0 głosów
723 wizyt
pytanie zadane 4 stycznia 2019 w Python przez DragonCoder Nałogowiec (36,500 p.)

Witam,

stworzylem 2 pliku w pythonie. 1. :

import os
def read_absoluth_path ():
    lokation = ""
    script_dir = os.path.dirname(__file__)
    rel_path = "config_of_project_lokation.txt"
    abs_file_path = os.path.join(script_dir, rel_path)

    f = open(abs_file_path, 'r')

    if f.mode == "r":
        lokation = f.read()
        return (lokation)

Jego zadaniem jest wczytanie pelnej sciazki do pliku config_of_project_lokation.txt , a pozniej wczytanie z tego pliku tekstowego jednej linijki. W dokumencie znajduje sie:  '/home/user_name/Deskopt_in_system_lng/'.

W drugim dokumencie:

import time
import sqlite3
import os
from read import read_absoluth_path

absoluth_path = read_absoluth_path ()
#database_name = absoluth_path + 'facharbeit/navigation/datenbank/facharbeit.db'
database_name = ('%s facharbeit/navigation/datenbank/facharbeit.db' %(absolut_path))
table_name = 'coord'
latitude_column = 'latitude'
longtitude_column = 'longitude'

print (absoluth_path)
print (database_name)

for i in range(1, 400):
    x = 52 - float(i)/10
    y = 12
    print (str(x))
    try:
        connection = sqlite3.connect(database_name)
        cursor = connection.cursor()
        cursor.execute('''INSERT INTO {tbn}( {ltn}, {longn} ) VALUES (  {x1}, {y1})'''\
        .format(tbn = table_name, ltn = latitude_column, longn = longtitude_column, x1 = x, y1 = y))
        connection.commit()
    except Exception as e:

        connection.rollback()
    

Importuje moj plik z funkcja, i chce jej uzyc, by podac pelna sciezke do pliku, bo jest ona dla kazdego usera inna. W zmiennej absoluth_path znajduje sie wartosc zwrocona z funkcji read_absoluth_path(), Pozniej probujepolaczyc ze soba wartosc, ktora otrzymalem z funkcji z reszta sciezki, ktora prowadzi do bazy danych. Problem w tym, ze otrzymuje to co znajduje sie w pliku tekstowym i moge to wyswietlic, ale gdy wypisuje database_name to otrzymuje tylko:

facharbeit/navigation/datenbank/facharbeit.db

blad moze byc gdzies w laczeniu obu tych stringow, chociaz probowalem metody z "+" i "%s" i obie nie zadzialaly. Moze blad lezy gdzies indziej?

1 odpowiedź

0 głosów
odpowiedź 4 stycznia 2019 przez Piotr Jasiński Bywalec (2,120 p.)

Po pierwsze to tak na szybko zauważyłem błąd

absoluth_path = read_absoluth_path () W tym momencie nie wołasz funkcji tylko moduł :/

Powinno być 

absoluth_path = read_absoluth_path.read_absoluth_path()

Po drugie:

absoluth_path = read_absoluth_path ()
#database_name = absoluth_path + 'facharbeit/navigation/datenbank/facharbeit.db'
database_name = ('%s facharbeit/navigation/datenbank/facharbeit.db' %(absolut_path))

Nazwa zmiennej w ostatniej linii jest źle napisana :/

 

komentarz 4 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)

To z ostatnio linijka zauwazylem i juz poprawilem, ale blad jest nadal. Tym razem mam blad atrybutu:

absoluth_path = read_absoluth_path.read_absoluth_path()
AttributeError: 'function' object has no attribute 'read_absoluth_path'

 

komentarz 4 stycznia 2019 przez Piotr Jasiński Bywalec (2,120 p.)
from read import read_absoluth_path

Zimportuj cały plik nie importuj pojedynczej funkcji z niego ;) możesz ale po co to i tak do jednego służy

komentarz 4 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)

po za importowaniu calego pliku i wpisaniu:

absoluth_path = read.read_absoluth_path ()

Output to:

/home/dragoncoder/Schreibtisch/
 facharbeit/navigation/datenbank/facharbeit.db

A w dalszym ciagu mam wypisywanie obu:

print (absoluth_path)
print (database_name)

 

komentarz 4 stycznia 2019 przez Secrus Nałogowiec (32,880 p.)
Piotr, mieszasz z tymi importami niepotrzebnie. Było dobrze, nie jest to zła praktyka, a nawet bardzo często w taki sposób się importuje, więc nie wiem po co wskazujesz to jako błąd
komentarz 4 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)

A co w takim razie moze byc bledem? Bo juz nei wiem. Skoro

print (absoluth_path)

wypisuje mi normalnie to co jest w pliku, a

print (database_name)

Tylko i wylacznie to co juz wczesnie wpisalem w '', to moze jakis blad podczas ich laczenia?

komentarz 4 stycznia 2019 przez Piotr Jasiński Bywalec (2,120 p.)
To nie błąd sam tak robię ale nie ma to sensu gdy mamy tam tylko jedną funkcję po co ;)
komentarz 4 stycznia 2019 przez Secrus Nałogowiec (32,880 p.)
Spróbuj może f-stringów? https://realpython.com/python-f-strings/
komentarz 4 stycznia 2019 przez DragonCoder Nałogowiec (36,500 p.)
database_name = f"{absoluth_path}{rest}"

database_name = (
    f"{absoluth_path}"
    f"{rest}"
)

SyntaxError: invalid syntax


Jako output w konsoli :D, ta jedna linia kodu, mnie meczy tak, ze mala glowa

Podobne pytania

+2 głosów
1 odpowiedź 5,155 wizyt
pytanie zadane 12 listopada 2019 w Python przez Karpik Użytkownik (680 p.)
0 głosów
3 odpowiedzi 5,529 wizyt
pytanie zadane 2 listopada 2019 w Python przez Karpik Użytkownik (680 p.)
+1 głos
1 odpowiedź 270 wizyt
pytanie zadane 13 września 2020 w Python przez TeaCup Obywatel (1,370 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...