Saya ingin mendapatkan file saat ini's path direktori. Saya mencoba:
>>> os.path.abspath(__file__)
'C:\\python27\\test.py'
Tapi bagaimana saya bisa mengambil direktori's path?
Misalnya:
'C:\\python27\\'
Jika anda berarti direktori dari script yang dijalankan:
import os
os.path.dirname(os.path.abspath(__file__))
Jika anda berarti direktori kerja saat ini:
import os
os.getcwd()
Perhatikan bahwa sebelum dan setelah file
adalah dua garis bawah, tidak hanya satu.
Juga mencatat bahwa jika anda menjalankan secara interaktif atau telah dimuat kode dari sesuatu yang lain dari sebuah file (misalnya: database atau sumber online), __file__
tidak dapat ditetapkan karena tidak ada gagasan dari "berkas saat ini". Jawaban di atas mengasumsikan skenario yang paling umum dari menjalankan script python yang ada di dalam file.
Menggunakan Path
adalah cara yang direkomendasikan sejak Python 3:
from pathlib import Path
print("File Path:", Path(__file__).absolute())
print("Directory Path:", Path().absolute())
Dokumentasi: pathlib
Catatan: Jika menggunakan Jupyter Notebook, __file__
doesn't kembali nilai yang diharapkan, sehingga Path().mutlak()
untuk digunakan.
Di Python 3.x yang saya lakukan:
from pathlib import Path
path = Path(__file__).parent.absolute()
Penjelasan:
Path(__file__)
adalah path ke file saat ini..orang tua
memberi anda direktori file adalah..mutlak()
memberi anda penuh mutlak jalan untuk itu.Menggunakan pathlib
adalah cara modern untuk bekerja dengan jalan. Jika anda membutuhkan itu sebagai string kemudian untuk beberapa alasan, lakukan saja str(path)
.
Anda dapat menggunakan os
dan os.jalan
perpustakaan dengan mudah sebagai berikut
import os
os.chdir(os.path.dirname(os.getcwd()))
os.jalan.dirname
kembali atas direktori saat ini.
Hal ini memungkinkan kita mengubah ke tingkat paling atas tanpa melewati setiap file argumen dan tanpa mengetahui path absolut.
IPython
memiliki sihir perintah %pwd
untuk dapatkan saat bekerja dengan direktori. Hal ini dapat digunakan dalam cara berikut:
from IPython.terminal.embed import InteractiveShellEmbed
ip_shell = InteractiveShellEmbed()
present_working_directory = ip_shell.magic("%pwd")
Pada IPython Jupyter Notebook %pwd
dapat digunakan secara langsung sebagai berikut:
present_working_directory = %pwd
JALAN YANG BERGUNA PROPERTI DI PYTHON:
from pathlib import Path
#Returns the path of the directory, where your script file is placed
mypath = Path().absolute()
print('Absolute path : {}'.format(mypath))
#if you want to go to any other file inside the subdirectories of the directory path got from above method
filePath = mypath/'data'/'fuel_econ.csv'
print('File path : {}'.format(filePath))
#To check if file present in that directory or Not
isfileExist = filePath.exists()
print('isfileExist : {}'.format(isfileExist))
#To check if the path is a directory or a File
isadirectory = filePath.is_dir()
print('isadirectory : {}'.format(isadirectory))
#To get the extension of the file
fileExtension = mypath/'data'/'fuel_econ.csv'
print('File extension : {}'.format(filePath.suffix))
OUTPUT: ABSOLUTE PATH ADALAH PATH DIMANA FILE PYTHON YANG DITEMPATKAN
Absolute path : D:\Study\Machine Pembelajaran\Jupitor Notebook\JupytorNotebookTest2\Udacity_Scripts\Matplotlib dan seaborn Part2
File path : D:\Study\Machine Pembelajaran\Jupitor Notebook\JupytorNotebookTest2\Udacity_Scripts\Matplotlib dan seaborn Part2\data\fuel_econ.csv
isfileExist : Benar
isadirectory : Palsu
Ekstensi File : .csv
Saya menemukan perintah berikut semua akan kembali path lengkap dari direktori induk dari Python 3.6 script.
Python 3.6 Script:
#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
from pathlib import Path
#Get the absolute path of a Python3.6 script
dir1 = Path().resolve() #Make the path absolute, resolving any symlinks.
dir2 = Path().absolute() #See @RonKalian answer
dir3 = Path(__file__).parent.absolute() #See @Arminius answer
print(f'dir1={dir1}\ndir2={dir2}\ndir3={dir3}')
Penjelasan link: .menyelesaikan(), .mutlak(), Path(file).orang tua().mutlak()
Untuk menjaga migrasi konsistensi di seluruh platform (macOS/Windows/Linux), cobalah:
path = r'%s' % os.getcwd().replace('\\','/')
Saya telah membuat sebuah fungsi untuk digunakan ketika menjalankan python di bawah IIS di CGI dalam rangka untuk mendapatkan folder saat ini:
import os
def getLocalFolder():
path=str(os.path.dirname(os.path.abspath(__file__))).split('\\')
return path[len(path)-1]
## IMPORT MODULES
import os
## CALCULATE FILEPATH VARIABLE
filepath = os.path.abspath('') ## ~ os.getcwd()
## TEST TO MAKE SURE os.getcwd() is EQUIVALENT ALWAYS..
## ..OR DIFFERENT IN SOME CIRCUMSTANCES