Ge├žerli dizini ve dosyan─▒n dizinini bulun [duplicate]


Al─▒nan cevaba git


Python'da bulmak i├žin hangi komutlar─▒ kullanabilirim:

  1. Ge├žerli dizin (Python beti─čini ├žal─▒┼čt─▒rd─▒─č─▒mda terminalde oldu─čum yer) ve
  2. ├çal─▒┼čt─▒rd─▒─č─▒m dosya nerede?

1959









Cevap say─▒s─▒n─▒ say: 13






Bir Python dosyas─▒n─▒n bulundu─ču dizine giden yolu almak i├žin bu dosyaya ┼čunu yaz─▒n:

 import os 
dir_path = os.path.dirname(os.path.realpath(__file__))
 

( os.chdir() Ge├žerli ├žal─▒┼čma dizininizi daha ├Ânce de─či┼čtirdiyseniz, __file__ sabitin de─čeri ge├žerli ├žal─▒┼čma dizinine g├Âre oldu─čundan ve bir os.chdir() ├ža─čr─▒ taraf─▒ndan de─či┼čtirilmedi─činden, yukar─▒daki de─čer art─▒┼č─▒n─▒n i┼če yaramayaca─č─▒n─▒ unutmay─▒n .)


Mevcut ├žal─▒┼čma dizinini kullanmak i├žin

 import os
cwd = os.getcwd()
 

Yukar─▒da kullan─▒lan mod├╝ller, sabitler ve fonksiyonlar i├žin dok├╝mantasyon referanslar─▒:


3069







Mevcut ├çal─▒┼čma Dizini: os.getcwd()

Bu __file__ ├Âzellik , y├╝r├╝tmekte oldu─čunuz dosyan─▒n nerede oldu─čunu bulman─▒za yard─▒mc─▒ olabilir. Bu SO g├Ânderisi her ┼čeyi a├ž─▒kl─▒yor: Python'da y├╝r├╝rl├╝kte olan dosyan─▒n yolunu nas─▒l bulabilirim?


308


2011-02-28





Bunu referans olarak yararl─▒ bulabilirsiniz:

 import os

print("Path at terminal when executing this file")
print(os.getcwd() + "\n")

print("This file path, relative to os.getcwd()")
print(__file__ + "\n")

print("This file full path (following symlinks)")
full_path = os.path.realpath(__file__)
print(full_path + "\n")

print("This file directory and name")
path, filename = os.path.split(full_path)
print(path + ' --> ' + filename + "\n")

print("This file directory only")
print(os.path.dirname(full_path))
 

260







pathlib Python 3.4'te tan─▒t─▒lan mod├╝l ( PEP 428 - Pathlib mod├╝l├╝ - nesne y├Ânelimli dosya sistemi yollar─▒ ), yolla ilgili deneyimi ├žok daha iyi hale getirir.

 $ pwd
/home/skovorodkin/stack
$ tree
.
ÔööÔöÇÔöÇ scripts
    ÔöťÔöÇÔöÇ 1.py
    ÔööÔöÇÔöÇ 2.py
 

Mevcut ├žal─▒┼čma dizinini almak i├žin ┼čunu kullan─▒n Path.cwd() :

 from pathlib import Path

print(Path.cwd())  # /home/skovorodkin/stack
 

Komut dosyan─▒z i├žin mutlak bir yol bulmak i├žin Path.resolve() y├Ântemi kullan─▒n :

 print(Path(__file__).resolve())  # /home/skovorodkin/stack/scripts/1.py
 

Ve beti─činizin bulundu─ču bir dizinin yolunu bulmak i├žin, eri┼čim .parent (daha .resolve() ├Ânce ├ža─č─▒rman─▒z ├Ânerilir .parent ):

 print(Path(__file__).resolve().parent)  # /home/skovorodkin/stack/scripts
 

Bunun __file__ baz─▒ durumlarda g├╝venilir olmad─▒─č─▒n─▒ unutmay─▒n : Python'da ge├žerli dosya yolunu nas─▒l bulabilirim? .


L├╝tfen not, o Path.cwd() , Path.resolve() ve di─čer Path (y├Ântemler geri d├Ân├╝┼č yolu nesneleri PosixPath benim durumumda) de─čil dizeleri. Baz─▒ open i┼člevlere neden olan Python 3.4 ve 3.5'te yerle┼čik i┼člev yaln─▒zca dize veya bayt nesnelerle ├žal─▒┼čabildi─činden ve nesneleri destekleyemedi─činden Path , Path nesneleri dizelere d├Ân├╝┼čt├╝rmeniz veya Path.open() y├Ântemi kullanman─▒z gerekti─činden, ikincisi de─či┼čtirmenizi gerektiriyordu. eski kod:

 $ cat scripts/2.py
from pathlib import Path

p = Path(__file__).resolve()

with p.open() as f: pass
with open(str(p)) as f: pass
with open(p) as f: pass

print('OK')

$ python3.5 scripts/2.py
Traceback (most recent call last):
  File "scripts/2.py", line 11, in <module>
    with open(p) as f:
TypeError: invalid file: PosixPath('/home/skovorodkin/stack/scripts/2.py')
 

G├Ârd├╝─č├╝n├╝z gibi open(p) Python 3.5 ile ├žal─▒┼čm─▒yor.

PEP 519 - Python 3.6'da uygulanan bir dosya sistemi yolu protokol├╝ eklemek , i┼člemek i├žin PathLike nesnelerin deste─čini ekler open , b├Âylece art─▒k do─črudan i┼člemek i├žin Path nesneleri iletebilirsiniz open :

 $ python3.6 scripts/2.py
OK
 

67







1. Ge├žerli dizinin tam yolunu bulmak i├žin

     >>import os
    >>print os.getcwd()
 

o / p: "C: \ Users \ admin \ myfolder"

1. Ge├žerli dizin klas├Âr├╝ ismini tek ba┼č─▒na almak

     >>import os
    >>str1=os.getcwd()
    >>str2=str1.split('\\')
    >>n=len(str2)
    >>print str2[n-1]
 

o / s: "myfolder"


55







┼×u anda bulundu─čunuz dosyan─▒n ge├žerli dizinini bulmaya ├žal─▒┼č─▒yorsan─▒z:

─░┼čletim sistemi agnostik yolu:

 dirname, filename = os.path.split(os.path.abspath(__file__))
 

36


2012-10-07





Python 3.4 kullan─▒yorsan─▒z , mevcut ├žal─▒┼čma dizininizi temsil eden bir nesneyi, bir├žok di─čer yeni ├Âzelliklerle birlikte pathlib kolayca araman─▒z─▒ sa─člayan yepyeni bir ├╝st d├╝zey mod├╝l├╝ var . pathlib.Path.cwd() Path

Bu yeni API hakk─▒nda daha fazla bilgiyi burada bulabilirsiniz .


30







# 1ÔÇÖe cevap:

Ge├žerli dizini istiyorsan─▒z, bunu yap─▒n:

 import os
os.getcwd()
 

Yaln─▒zca herhangi bir klas├Âr ad─▒ istiyorsan─▒z ve bu klas├Âre giden yol varsa, bunu yap─▒n:

 def get_folder_name(folder):
    '''
    Returns the folder name, given a full folder path
    '''
    return folder.split(os.sep)[-1]
 

# 2'ye cevap:

 import os
print os.path.abspath(__file__)
 

27







Partiye biraz ge├ž kald─▒m, ancak ┼ču anki y├╝r├╝tme ba─člam─▒n─▒z─▒n ad─▒n─▒ bulman─▒n en ├Âzl├╝ yolu

 current_folder_path, current_folder_name = os.path.split(os.getcwd())
 

26







Pathlib bu ┼čekilde mevcut beti─či i├žeren dizini almak i├žin kullan─▒labilir:

 import pathlib
filepath = pathlib.Path(__file__).resolve().parent
 

18







Ge├žerli dizinin tam yolunu bulmak i├žin:

os.path.realpath ( '')


17







Y├╝r├╝t├╝lmekte olan komut dosyas─▒n─▒n yerini ar─▒yorsan─▒z sys.argv[0] , tam yolu bulmak i├žin kullanabilirsiniz .


16







1. soru i├žin os.getcwd() # get working dir ve os.chdir(r'D:\Steam\steamapps\common') # set working dir


sys.argv[0] 2. soru i├žin kullan─▒lmas─▒n─▒ ├Âneririm sys.argv , ├ž├╝nk├╝ de─či┼čken de─čildir ve bu nedenle daima ge├žerli dosyay─▒ (mod├╝l nesne yolu) d├Ând├╝r├╝r ve etkilenmez os.chdir() . Ayr─▒ca b├Âyle yapabilirsiniz:

 import os
this_py_file = os.path.realpath(__file__)

# vvv Below comes your code vvv #
 

ancak bu pasaj sys.argv[0] , PyInstaller taraf─▒ndan derlendi─činde i┼če yaramayacak ya da ├žal─▒┼čmayacak ├ž├╝nk├╝ sihirli ├Âzellikler __main__ d├╝zeye ayarlanmam─▒┼čt─▒r ve exe'nizin ├ža─čr─▒lma ┼čeklidir (├žal─▒┼čan direkten sys.argv[0] etkilenece─či anlam─▒na gelir).


7



─░lgili yay─▒nlar


Dosya ├ž─▒kt─▒s─▒ olan dizinleri otomatik olarak olu┼čturma [duplicate]

Dizinde ve alt dizinlerde sed ile bulun ve de─či┼čtirin

ÔÇťFind: paths ifadesinden ├Ânce gelmeli:ÔÇŁ Ge├žerli dizindeki dosyalar─▒ da bulabilen ├Âzyinelemeli bir aramay─▒ nas─▒l belirleyebilirim?

Grep'i ÔÇťhelloÔÇŁ dizisine sahip olan ancak sadece .h ve .cc dosyalar─▒n─▒ g├Âr├╝nt├╝leyen t├╝m dosyalar─▒ bulmak i├žin ge├žerli dizini aramak i├žin nas─▒l kullanabilirim?

Bash olarak t├╝m dizini ve ├Âzyinelemeli dosyalar─▒ nas─▒l kopyalayabilirim?

Unix'te, ge├žerli dizindeki ve alt─▒ndaki her ┼čeyi nas─▒l kald─▒r─▒rs─▒n─▒z?

.NET'te dizin ve dosya yazma izinlerini denetleme

tar: t├╝m dosyalar─▒ ve dizinleri INCLUDING .svn ve benzeri mevcut dizine ekle

Bir toplu i┼č dosyas─▒n─▒n ge├žerli dizinini nas─▒l bulabilirim ve sonra onu yol i├žin nas─▒l kullan─▒r─▒m?

Git zip dosyalar─▒n─▒ dizin olarak, zip i├žindeki dosyalar─▒ blob olarak de─čerlendirebilir mi?

Etiketle ilgili di─čer sorular [python]


JavaScript'te bir dizi i├žin her biri i├žin?

Bir div'in kalan ekran bo┼člu─čunun y├╝ksekli─čini doldurmas─▒n─▒ sa─člay─▒n

Java enum ├╝yelerinin kar┼č─▒la┼čt─▒r─▒lmas─▒: == veya equals ()?

JQuery ile isme g├Âre bir eleman─▒ nas─▒l se├žebilirim?

Python'da bir dizindeki birden fazla dosyay─▒ yeniden adland─▒r─▒n [duplicate]

├ľn kontrol iste─čine yan─▒t, eri┼čim kontrol├╝ kontrol├╝nden ge├žmiyor

├ľl├╝mc├╝l hata: 30 saniyelik maksimum y├╝r├╝tme s├╝resi a┼č─▒ld─▒

─░stek gerekli bir parametre eksikse hangi HTTP durum yan─▒t kodunu kullanmal─▒y─▒m?

Bir dosyan─▒n python i├žinde bir dizin veya normal dosya olup olmad─▒─č─▒n─▒ kontrol etmek nas─▒l? [├žift]

─░fadede bir kabu─čunda birden fazla ko┼čul nas─▒l temsil edilir?