Mövcud kataloq və fayl qovluğunu tapın

Python'da axtarış üçün hansı əmrləri istifadə edə bilərəm:

  • cari dizin (Python skriptinin başladığı zaman terminaldə olduğum yer) və
  • Mənim yayınladığım fayl harada?
1698
28 февр. John Howard tərəfindən təyin olunan 28 Fevral. 2011-02-28 04:51 '11 at 4:51 2011-02-28 04:51
@ 15 cavab

Python faylını ehtiva edən kataloqun tam yolunu almaq üçün bu faylda yaz:

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

(Qeyd edək ki, __file__ sabitinin dəyəri mövcud iş __file__ aiddir və os.chdir() çağırışa dəyişməzkən, mövcud iş os.chdir() dəyişdirmək üçün artıq os.chdir() istifadə os.chdir() yuxarıdakı sehr işləməyəcəkdir.)


Mövcud işçi qovluğunu almaq üçün istifadə edin

 import os cwd = os.getcwd() 

Yuxarıda istifadə olunan modullar, sabitlər və funksiyalar üçün sənədlərə istinadlar:

2613
28 февр. Cavab 28 fevral tarixində Russell Dias tərəfindən verilir . 2011-02-28 04:54 '11 at 4:54 2011-02-28 04:54

Cari iş siyahısı: os.getcwd()

border=0

A \_\_file\_\_ attribute , yürütülebilir faylın bulunduğu yerin bulunmasına yardım olacaq. Bu SO poçtu hər şeyi izah edir: Python-da mövcud yürütülebilir fayl yolu necə əldə edə bilərəm?

285
28 февр. cavab Nix 28 feb verilir . 2011-02-28 04:53 '11 'da 4:53' də 2011-02-28 04:53

Bu faydalı bir istinad kimi tapa bilərsiniz:

 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)) 
241
05 дек. Daniel Reis tərəfindən verilmiş cavab 05 Dek 2012-12-05 13:18 '12 saat 13:18 'da 2012-12-05 13:18

1. Mövcud kataloqun tam yolunu almaq üçün

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

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

1. Yalnız qovluq qovluğunun adını almaq üçün

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

o / p: "MyFolder"

49
24 апр. cavab aprelin 24-də vinithravit tərəfindən verilir 2012-04-24 10:00 '12 saat 10:00 'da, 2012-04-24 10:00' də

İndi olduğunuz faylın cari qovluğunu tapmaq üçün çalışırsınızsa:

Agnostic OS metodu:

 dirname, filename = os.path.split(os.path.abspath(__file__)) 
36
07 окт. Kurt tərəfindən verilmiş cavab 07 oktyabr 2012-10-07 12:10 '12 at 12:10 2012-10-07 12:10

pathlib , Python 3.4-də təqdim olunmuşdur ( PEP 428 - pathlib modul obyekt yönümlü fayl sistemi yolu ), izləmə ilə bağlı işi çox yaxşılaşdırır.

 $ pwd /home/skovorodkin/stack $ tree . └── scripts ├── 1.py └── 2.py 

Mövcud işçi qovluğunu almaq üçün Path.cwd() istifadə edin:

 from pathlib import Path print(Path.cwd()) # /home/skovorodkin/stack 

Path.resolve() faylına mütləq şəkildə Path.resolve() istifadə edin:

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

Ssenarinizin yerləşdiyi .parent yol tapmaq üçün, onun .parent ( .resolve() ilə .parent ):

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

__file__ bəzi vəziyyətlərdə etibarlı olmadığını unutmayın: Python-da mövcud yürütülebilir fayl yolu necə ala bilərəm? ,


Path.cwd() , Path.resolve() və digər Path metodları strings deyil, yol obyektlərini ( PosixPath mənim vəziyyətimdə) PosixPath . Python 3.4 və 3.5-də, bu bir neçə ağrıya gətirib çıxardı, çünki open funksiya yalnız string və ya byte obyektləri ilə işləyə bilər və Path obyektlərinə dəstək vermədi, beləliklə Path obyektlərini Path.open() çevirmək və ya Path.open() istifadə etmək Path.open() lakin sonuncu parametr dəyişməyi tələb etdi köhnə 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üyünüz kimi, open(p) Python 3.5 ilə işləmir.

PEP 519 - Python PathLike tətbiq olunan Path File System protokolu əlavə, PathLike open obyekt funksiyası üçün dəstək əlavə edir, buna görə artıq birbaşa open funksiya üçün Path obyektlərindən keçə bilərsiniz:

 $ python3.6 scripts/2.py OK 
34
05 сент. skovorodkin tərəfindən verilmiş cavab 05 Sep. 2017-09-05 22:14 '17 saat 10:14 'da 2017-09-05 22:14

Python 3.4 istifadə edirsinizsə, cari iş pathlib.Path.cwd() təmsil edən bir Path obyektini almaq üçün pathlib.Path.cwd() rahatlıqla zəng etməyə imkan verən yeni bir üst səviyyəli pathlib bir çox yeni xüsusiyyət mövcuddur.

Bu yeni API haqqında daha ətraflı məlumatı burada tapa bilərsiniz .

28
20 февр. Cavab 20 fevralda Jazzer tərəfindən verilir. 2015-02-20 23:32 '15 at 23:32 2015-02-20 23:32

# 1 cavab:

Mövcud kataloqdan istifadə etmək istəyirsinizsə, aşağıdakıları yerinə yetirin:

 import os os.getcwd() 

Yalnızca hər hansı bir qovluq adını istəyir və bu qovluq yolunuz varsa, aşağıdakıları edin:

27
05 нояб. Cavab Blairg23 05 noyabr tarixində verilir. 2015-11-05 12:31 '15 at 12:31 AM 2015-11-05 12:31

Bir tərəf üçün bir qədər gecikdim amma hesab edirəm ki, cari icra məzmununun yalnız adını tapmaq üçün ən qısa yol olacaqdır

 current_folder_path, current_folder_name = os.path.split(os.getcwd()) 
27
09 окт. cavab 09 oktyabrda StormShadow verilir . 2013-10-09 13:31 '13 at 13:31 2013-10-09 13:31

Mövcud kataloqun tam yolunu almaq üçün:

os.path.realpath ('')

17
22 сент. cavab sentyabrın 22-də İlia S. tərəfindən verilmişdir 2015-09-22 11:12 '15 'də 11:12' də 2015-09-22 11:12

Pathlib mövcud scriptdən ibarət olan bir kataloq əldə etmək üçün istifadə edilə bilər:

 import pathlib filepath = pathlib.Path(__file__).resolve().parent 
17
29 сент. Cavab Mathieu C tərəfindən verilir. 29 sentyabr. 2016-09-29 16:07 '16 at 16:07 2016-09-29 16:07

Hal-hazırda icra edilən scriptin yerini axtarırsınızsa, tam yolunu almaq üçün sys.argv[0] istifadə edə bilərsiniz.

17
12 авг. Cavab Grochni 12 aug verilir . 2013-08-12 14:27 '13 at 14:27 2013-08-12 14:27

Aşağıdakı skriptin cari işçi kataloqunu görmək üçün:

 import os current_working_directory = os.getcwd() 
9
08 мая '17 в 13:57 2017-05-08 13:57 Cavab Məhəmməd Həsən tərəfindən 08 may 17: 17-da 13:57 2017-05-08 13:57

Python'daki iş kataloqunuzu alın. Aşağıdakı kodu istifadə edə bilərsiniz:

 import os cwd = os.getcwd() #to get current working directory print(cwd) 
6
29 авг. Cavab Nirali Khoda tərəfindən 29 avqustda verilir. 2017-08-29 13:11 '17 at 13:11 2017-08-29 13:11

Sual 1, os.getcwd() # get working diros.chdir(r'D:\Steam\steamapps\common') # set working dir


sys.argv dəyişməz və buna görə də həmişə cari fayl (obyekt obyekt yolu) qaytarır və os.chdir() təsir etmir, çünki sual 2 üçün sys.argv[0] istifadə məsləhətdir. Siz həmçinin aşağıdakıları edə bilərsiniz:

 import os this_py_file = os.path.realpath(__file__) # vvv Below comes your code vvv # 

lakin bu parça və sys.argv[0] PyInstaller tərtib edərkən işləməyəcək və ya işləməyəcək, çünki sihirli xüsusiyyətlər __main__ səviyyəsində deyil, sys.argv[0] isə exe sys.argv[0] (deməkdir ki, bu iş kitabçasından təsirlənir).

5
15 июня '17 в 16:45 2017-06-15 16:45 Cavab Vladislav Toncharov tərəfindən 15 İyun, 16: 45-207-06-15 16:45 tarixində verilir

bağlı digər suallar və ya sual