• 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
789 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,239 wizyt
pytanie zadane 12 listopada 2019 w Python przez Karpik Użytkownik (680 p.)
0 głosów
3 odpowiedzi 5,641 wizyt
pytanie zadane 2 listopada 2019 w Python przez Karpik Użytkownik (680 p.)
+1 głos
1 odpowiedź 280 wizyt
pytanie zadane 13 września 2020 w Python przez TeaCup Obywatel (1,370 p.)

92,757 zapytań

141,679 odpowiedzi

320,441 komentarzy

62,101 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

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!

...