Python: Jak utworzyć i zapisać plik?


(lutum2012) #1

Oto część skryptu w Pythonie, który zapisuje wartości w pliku tekstowym:

    if save_key.positive:
    with open(path + "save.txt", 'w') as savefile:
    savefile.write("{0}".format(str(value)))

Ten skrypt może operować tylko na pliku w folderze z grą jeśli folder jest na pulpicie. Ale po zainstalowaniu gry, folder jest w lokalizacji (C:/Program Files/…) i już nie można operować na pliku, bo jest odmowa dostępu. Więc chciałbym aby ten skrypt tworzył folder a w nim plik tekstowy w lokalizacji AppData/Roaming, by nie było żadnej odmowy dostępu. Na internecie znalazłem taki skrypt, ale nie wiem jak go wykorzystać, co w nim zmienić i gdzie go wkleić do skryptu, który już mam, bo dopiero zaczynam z Pythonem:

import os dir_path = '%s\\Example\\' % os.environ['APPDATA'] if not os.path.exists(dir_path): os.makedirs(dir_path) file_path = '%sexample.db' % dir_path sqlite3.connect(file_path)

Albo może jeśli nie tak jak opisałem, ale inaczej da się rozwiązać ten problem?


(Fizyda) #2

Daj link do tego co znalazłeś bo zjadło Ci entery, a w pythonie jednak mają one kolosalne znaczenie, tak samo jak zjedzone tabulatory.

Zgaduję, jednak że wystarczy zamienić sqlite3.connect() na open() podając w nim ścieżkę do pliku.


(lutum2012) #3

(Fizyda) #4

Dobra to jeszcze raz, z czym/w którym miejscu masz problem z zastosowaniem rozwiązania w swoim skrypcie?


(lutum2012) #5

Bo jak jest

with open(path + "save.txt", 'w')

to zapisuje w katalogu w którym jest gra. A ja bym chciał, żeby ten plik “save.txt” tworzył się jeśli nie istnieje w wybranej lokalizacji czyli …/AppData/Roaming, albo nawet w Dokumentach. I wiem, że coś muszę zamienić na to “path” tylko nie wiem co. To tak jak pisałeś sqlite3.connect() to w tych nawiasach lokalizację wpisać?


(Fizyda) #6

Przykład do którego linkujesz pokazuje jak zbudować ścieżkę której potrzebujesz i wykorzystać ją do stworzenia pliku sqlite, ale Ciebie interesuje zwykły plik więc z przykładu potrzebujesz tylko pierwszą jego część.

Czyli tyle:

import os

dir_path = '%s\\Example\\' %  os.environ['APPDATA'] 
if not os.path.exists(dir_path):
    os.makedirs(dir_path)

Zmieniając Example na nazwę folderu w którym chcesz trzymać pliki w appdata. Możesz zagłębić się jeszcze w katalog Roaming jeśli chcesz/potrzebujesz.


(lutum2012) #7

Dzięki ogromne za pomoc.