Portál AbcLinuxu, 4. května 2025 22:57

Dotaz: Kontrola možnosti zápisu v Pythonu

29.8.2015 08:50 Mára
Kontrola možnosti zápisu v Pythonu
Přečteno: 250×
Odpovědět | Admin
Hezký den všem. Uměl by prosím nědo poradit, jak otestovat v Pythonu, zda můžé script zapisovat do zadaného adresáře včetně jeho podsložek a souborů ? Děkuji

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

pavlix avatar 29.8.2015 09:13 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Kontrola možnosti zápisu v Pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Obávám se, že toto je věcí přečtení manuálu k modulům os a sys.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
29.8.2015 11:03 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Kontrola možnosti zápisu v Pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co na tom chceš testovat? Prostě zapiš.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Bystroushaak avatar 30.8.2015 22:05 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Kontrola možnosti zápisu v Pythonu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Samotný test se dá provést funkcí os.access(). Projití všech souborů na zadané cestě pak přes os.walk().

Kód by tedy mohl vypadat například takhle:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# Interpreter version: python 2.7
#
# Imports =====================================================================
import os


# Functions & classes =========================================================
def check_permissions(dir_path, permissions=(os.R_OK or os.W_OK or os.X_OK)):
    for root, dirs, files in os.walk(dir_path):
        paths = (os.path.join(root, name) for name in dirs + files)

        for path in paths:
            if not os.access(path, permissions):
                raise IOError("Path `%s` is not accessible!" % path)


# Main program ================================================================
if __name__ == '__main__':
    check_permissions(".", (os.R_OK or os.W_OK))
Jak už ale naznačovali předřečníci, tenhle přístup není úplně ideální. Co ti brání tam prostě zkusit zapsat a řešit problémy teprve ve chvíli, kdy je budeš mít? Práva se můžou kdykoliv změnit a v praxi bys tak tuhle funkci musel volat úplně pokaždé, když chceš něco udělat.
blog.rfox.eu

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.