Mam mały problem z ~ na moich ścieżkach.
Ten przykład kodu tworzy katalogi o nazwie „~ / jakiś_katalog” i nie rozumiem, że chciałem utworzyć jakiś_katalog w moim katalogu domowym.
my_dir = "~/some_dir"
if not os.path.exists(my_dir):
os.makedirs(my_dir)
Zauważ, że jest to w systemie opartym na systemie Linux.
./
do odniesienia do bieżącego katalogu, a tym samym./~
do usunięcia folderu~
w bieżącym katalogu. Aby być bezpieczniejsze, to najłatwiej jest po prostu podać pełną ścieżkę:rm -rf path/to/bad/dir/~
.rm \~
Konwersja
~/some_dir
do$HOME/some_dir
jest nazywana rozszerzeniem tyldy i jest powszechną funkcją interfejsu użytkownika. System plików nic o tym nie wie.W Pythonie ta funkcja jest implementowana przez os.path.expanduser :
źródło
~
. Tak więc skrót do strony głównej powłoki jest niejednoznaczny i najlepiej go unikać, jeśli możesz.The file system does not know anything about it.
+1Dzieje się tak prawdopodobnie dlatego, że Python nie jest Bash i nie przestrzega tych samych konwencji. Możesz użyć tego:
źródło
Utworzy folder, jeśli nie, to nie utworzy folderu.
UWAGA : utworzy również foldery w ścieżce (jeśli jest to wymagane)
Ta funkcja działa jak
mkdir -p path/to/folder
źródło
Możesz to teraz zrobić jak
Aby uzyskać informacje na temat używania domeny, zapoznaj się z https://stackoverflow.com/a/54190233/6799074
srblib.abs_path
źródło