ਪਾਈਥਨ ਵਿੱਚ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦਾ ਸਥਾਨ (ਮਾਰਗ) ਪ੍ਰਾਪਤ ਕਰਨਾ: __ ਫਾਈਲ__.

ਕਾਰੋਬਾਰ

ਪਾਈਥਨ ਵਿੱਚ ਚੱਲ ਰਹੀ ਸਕ੍ਰਿਪਟ ਫਾਈਲ ਦਾ ਸਥਾਨ (ਮਾਰਗ) ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, __file__ ਦੀ ਵਰਤੋਂ ਕਰੋ. ਇਹ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦੀ ਸਥਿਤੀ ਦੇ ਅਧਾਰ ਤੇ ਹੋਰ ਫਾਈਲਾਂ ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਉਪਯੋਗੀ ਹੈ.

ਪਾਈਥਨ 3.8 ਤਕ, __file__ ਪਾਈਥਨ ਕਮਾਂਡ (ਜਾਂ ਕੁਝ ਵਾਤਾਵਰਣ ਵਿੱਚ python3 ਕਮਾਂਡ) ਚਲਾਉਂਦੇ ਸਮੇਂ ਨਿਰਧਾਰਤ ਮਾਰਗ ਵਾਪਸ ਕਰਦਾ ਹੈ. ਜੇ ਕੋਈ ਰਿਸ਼ਤੇਦਾਰ ਮਾਰਗ ਨਿਰਧਾਰਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਸੰਬੰਧਤ ਮਾਰਗ ਵਾਪਸ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ; ਜੇ ਇੱਕ ਸੰਪੂਰਨ ਮਾਰਗ ਨਿਰਧਾਰਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਸੰਪੂਰਨ ਮਾਰਗ ਵਾਪਸ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ.

ਪਾਈਥਨ 3.9 ਅਤੇ ਬਾਅਦ ਵਿੱਚ, ਸੰਪੂਰਨ ਮਾਰਗ ਰਨਟਾਈਮ ਤੇ ਨਿਰਧਾਰਤ ਮਾਰਗ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ ਵਾਪਸ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ.

ਹੇਠਾਂ ਦਿੱਤੀ ਸਮਗਰੀ ਦੀ ਵਿਆਖਿਆ ਕੀਤੀ ਗਈ ਹੈ.

  • os.getcwd(),__file__
  • ਇਸ ਵੇਲੇ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦਾ ਫਾਈਲ ਨਾਮ ਅਤੇ ਡਾਇਰੈਕਟਰੀ ਨਾਮ ਪ੍ਰਾਪਤ ਕਰੋ.
  • ਚੱਲਣ ਵਾਲੀ ਫਾਈਲ ਦਾ ਸੰਪੂਰਨ ਮਾਰਗ ਪ੍ਰਾਪਤ ਕਰੋ.
  • ਮੌਜੂਦਾ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦੇ ਸਥਾਨ ਦੇ ਅਧਾਰ ਤੇ ਹੋਰ ਫਾਈਲਾਂ ਪੜ੍ਹਦਾ ਹੈ.
  • ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦੀ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਭੇਜੋ.
  • ਰਨਟਾਈਮ ਵੇਲੇ ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ ਉਹੀ ਪ੍ਰਕਿਰਿਆ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ.

ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ (ਵਰਕਿੰਗ ਡਾਇਰੈਕਟਰੀ) ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਅਤੇ ਬਦਲਣ ਬਾਰੇ ਜਾਣਕਾਰੀ ਲਈ ਹੇਠਾਂ ਦਿੱਤਾ ਲੇਖ ਦੇਖੋ.

ਨੋਟ ਕਰੋ ਕਿ __file__ ਦੀ ਵਰਤੋਂ ਜੁਪੀਟਰ ਨੋਟਬੁੱਕ (.ipynb) ਵਿੱਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ.
ਡਾਇਰੈਕਟਰੀ ਜਿੱਥੇ .ipynb ਸਥਿਤ ਹੈ, ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਦੇ ਰੂਪ ਵਿੱਚ ਚਲਾਇਆ ਜਾਏਗਾ, ਉਸ ਡਾਇਰੈਕਟਰੀ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ ਜਿੱਥੇ ਜੂਪੀਟਰ ਨੋਟਬੁੱਕ ਸ਼ੁਰੂ ਕੀਤੀ ਗਈ ਹੈ.
ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਬਦਲਣ ਲਈ ਕੋਡ ਵਿੱਚ os.chdir () ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਸੰਭਵ ਹੈ.

os.getcwd () ਅਤੇ __file__.

ਵਿੰਡੋਜ਼ ਵਿੱਚ, ਤੁਸੀਂ ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ pwd ਦੀ ਬਜਾਏ dir ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ.

pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook

ਹੇਠਲੇ ਪੱਧਰ (data \ src) ਵਿੱਚ ਹੇਠ ਲਿਖੀਆਂ ਸਮਗਰੀ ਦੇ ਨਾਲ ਇੱਕ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ ਫਾਈਲ (file_path.py) ਬਣਾਉ.

import os

print('getcwd:      ', os.getcwd())
print('__file__:    ', __file__)

ਸਕ੍ਰਿਪਟ ਫਾਈਲ ਦਾ ਮਾਰਗ ਨਿਰਧਾਰਤ ਕਰਦੇ ਹੋਏ ਪਾਈਥਨ ਕਮਾਂਡ (ਜਾਂ ਕੁਝ ਵਾਤਾਵਰਣ ਵਿੱਚ ਪਾਈਥਨ 3 ਕਮਾਂਡ) ਚਲਾਓ.

python3 data/src/file_path.py
# getcwd:       /Users/mbp/Documents/my-project/python-snippets/notebook
# __file__:     data/src/file_path.py

ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਦਾ ਪੂਰਾ ਮਾਰਗ os.getcwd () ਨਾਲ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ. ਤੁਸੀਂ python3 ਕਮਾਂਡ ਦੁਆਰਾ ਨਿਰਧਾਰਤ ਮਾਰਗ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ __file__ ਦੀ ਵਰਤੋਂ ਵੀ ਕਰ ਸਕਦੇ ਹੋ.

ਪਾਈਥਨ 3.8 ਤਕ, __file__ ਵਿੱਚ ਪਾਈਥਨ (ਜਾਂ ਪਾਇਥਨ 3) ਕਮਾਂਡ ਵਿੱਚ ਨਿਰਧਾਰਤ ਮਾਰਗ ਸ਼ਾਮਲ ਹੋਵੇਗਾ. ਉਪਰੋਕਤ ਉਦਾਹਰਣ ਵਿੱਚ, ਸੰਬੰਧਤ ਮਾਰਗ ਵਾਪਸ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ ਕਿਉਂਕਿ ਇਹ ਰਿਸ਼ਤੇਦਾਰ ਹੈ, ਪਰ ਸੰਪੂਰਨ ਮਾਰਗ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜੇ ਇਹ ਸੰਪੂਰਨ ਹੋਵੇ.

pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook

python3 /Users/mbp/Documents/my-project/python-snippets/notebook/data/src/file_path.py
# getcwd:       /Users/mbp/Documents/my-project/python-snippets/notebook
# __file__:     /Users/mbp/Documents/my-project/python-snippets/notebook/data/src/file_path.py

ਪਾਈਥਨ 3.9 ਅਤੇ ਬਾਅਦ ਵਿੱਚ __file__ ਨੂੰ ਪੂਰਾ ਮਾਰਗ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਪਾਇਥਨ (ਜਾਂ ਪਾਇਥਨ 3) ਕਮਾਂਡ ਵਿੱਚ ਨਿਰਧਾਰਤ ਮਾਰਗ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ.

ਹੇਠ ਦਿੱਤੀ ਉਦਾਹਰਣ ਵਿੱਚ, ਅਸੀਂ ਪਾਇਥਨ 3.7 ਵਿੱਚ ਉਸੇ ਸਕ੍ਰਿਪਟ ਫਾਈਲ (file_path.py) ਵਿੱਚ ਕੋਡ ਜੋੜਾਂਗੇ ਅਤੇ ਉਪਰੋਕਤ ਡਾਇਰੈਕਟਰੀ ਦੇ ਸੰਬੰਧ ਵਿੱਚ ਇਸਨੂੰ ਚਲਾਵਾਂਗੇ.

ਪਾਈਥਨ 3.7 ਵਿੱਚ, ਪੂਰਨ ਮਾਰਗ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ. ਨਤੀਜੇ ਇਸ ਭਾਗ ਦੇ ਅੰਤ ਤੇ ਪ੍ਰਦਰਸ਼ਤ ਕੀਤੇ ਗਏ ਹਨ.

ਇਸ ਵੇਲੇ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦਾ ਫਾਈਲ ਨਾਮ ਅਤੇ ਡਾਇਰੈਕਟਰੀ ਨਾਮ ਪ੍ਰਾਪਤ ਕਰੋ.

ਚੱਲ ਰਹੀ ਫਾਈਲ ਦਾ ਫਾਈਲ ਨਾਮ ਅਤੇ ਡਾਇਰੈਕਟਰੀ ਨਾਮ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਸਟੈਂਡਰਡ ਲਾਇਬ੍ਰੇਰੀ ਦੇ os.path ਮੋਡੀuleਲ ਵਿੱਚ ਹੇਠਾਂ ਦਿੱਤੇ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰੋ.

  • os.path.basename()
  • os.path.dirname()
print('basename:    ', os.path.basename(__file__))
print('dirname:     ', os.path.dirname(__file__))

ਚੱਲਣ ਦਾ ਨਤੀਜਾ.

# basename:     file_path.py
# dirname:      data/src

ਚੱਲਣ ਵਾਲੀ ਫਾਈਲ ਦਾ ਸੰਪੂਰਨ ਮਾਰਗ ਪ੍ਰਾਪਤ ਕਰੋ.

ਜੇ __ ਫਾਈਲ__ ਨਾਲ ਕੋਈ ਰਿਸ਼ਤੇਦਾਰ ਮਾਰਗ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਸਨੂੰ os.path.abspath () ਨਾਲ ਇੱਕ ਸੰਪੂਰਨ ਮਾਰਗ ਵਿੱਚ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ. ਡਾਇਰੈਕਟਰੀਆਂ ਨੂੰ ਪੂਰਨ ਮਾਰਗਾਂ ਵਜੋਂ ਵੀ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ.

print('abspath:     ', os.path.abspath(__file__))
print('abs dirname: ', os.path.dirname(os.path.abspath(__file__)))

ਚੱਲਣ ਦਾ ਨਤੀਜਾ.

# abspath:      /Users/mbp/Documents/my-project/python-snippets/notebook/data/src/file_path.py
# abs dirname:  /Users/mbp/Documents/my-project/python-snippets/notebook/data/src

ਜੇ os.path.abspath () ਵਿੱਚ ਇੱਕ ਸੰਪੂਰਨ ਮਾਰਗ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਤਾਂ ਇਹ ਉਸੇ ਤਰ੍ਹਾਂ ਵਾਪਸ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ. ਇਸ ਲਈ, ਜੇ __file__ ਇੱਕ ਸੰਪੂਰਨ ਮਾਰਗ ਹੈ, ਤਾਂ ਹੇਠ ਲਿਖੀਆਂ ਗਲਤੀਆਂ ਨਹੀਂ ਹੋਣਗੀਆਂ.

  • os.path.abspath(__file__)

ਮੌਜੂਦਾ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦੇ ਸਥਾਨ ਦੇ ਅਧਾਰ ਤੇ ਹੋਰ ਫਾਈਲਾਂ ਪੜ੍ਹਦਾ ਹੈ.

ਜੇ ਤੁਸੀਂ ਚੱਲਣ ਵਾਲੀ ਫਾਈਲ ਦੇ ਸਥਾਨ (ਮਾਰਗ) ਦੇ ਅਧਾਰ ਤੇ ਹੋਰ ਫਾਈਲਾਂ ਨੂੰ ਪੜ੍ਹਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ os.path.join () ਦੀ ਵਰਤੋਂ ਕਰਦਿਆਂ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਦੋ ਫਾਈਲਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ.

  • ਚੱਲਣ ਵਾਲੀ ਫਾਈਲ ਦੀ ਡਾਇਰੈਕਟਰੀ
  • ਚੱਲ ਰਹੀ ਫਾਈਲ ਤੋਂ ਪੜ੍ਹਨ ਵਾਲੀ ਫਾਈਲ ਦਾ ਸੰਬੰਧਤ ਮਾਰਗ.

ਜੇ ਤੁਸੀਂ ਫਾਈਲ ਨੂੰ ਉਸੇ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਪੜ੍ਹਨਾ ਚਾਹੁੰਦੇ ਹੋ ਜਿਸ ਫਾਈਲ ਨੂੰ ਤੁਸੀਂ ਚਲਾ ਰਹੇ ਹੋ, ਸਿਰਫ ਫਾਈਲ ਦੇ ਨਾਮ ਨੂੰ ਜੋੜੋ.

print('[set target path 1]')
target_path_1 = os.path.join(os.path.dirname(__file__), 'target_1.txt')

print('target_path_1: ', target_path_1)

print('read target file:')
with open(target_path_1) as f:
    print(f.read())

ਚੱਲਣ ਦਾ ਨਤੀਜਾ.

# [set target path 1]
# target_path_1:  data/src/target_1.txt
# read target file:
# !! This is "target_1.txt" !!

ਉੱਪਰਲਾ ਪੱਧਰ “.” ਦੁਆਰਾ ਦਰਸਾਇਆ ਗਿਆ ਹੈ. ਤੁਸੀਂ ਇਸ ਨੂੰ ਉਵੇਂ ਹੀ ਛੱਡ ਸਕਦੇ ਹੋ, ਪਰ ਤੁਸੀਂ ਮਾਰਗ ਨੂੰ ਸਧਾਰਨ ਬਣਾਉਣ ਅਤੇ ਵਾਧੂ “. \” ਅਤੇ ਹੋਰ ਪਾਤਰਾਂ ਨੂੰ ਹਟਾਉਣ ਲਈ os.path.normpath () ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ.

print('[set target path 2]')
target_path_2 = os.path.join(os.path.dirname(__file__), '../dst/target_2.txt')

print('target_path_2: ', target_path_2)
print('normalize    : ', os.path.normpath(target_path_2))

print('read target file:')
with open(target_path_2) as f:
    print(f.read())

ਚੱਲਣ ਦਾ ਨਤੀਜਾ.

# [set target path 2]
# target_path_2:  data/src/../dst/target_2.txt
# normalize    :  data/dst/target_2.txt
# read target file:
# !! This is "target_2.txt" !!

ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦੀ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਭੇਜੋ.

ਵਰਤਮਾਨ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਸਕ੍ਰਿਪਟ ਵਿੱਚ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦੀ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਲਿਜਾਣ ਲਈ os.chdir () ਦੀ ਵਰਤੋਂ ਕਰੋ.

ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਇਸਨੂੰ os.getcwd () ਦੁਆਰਾ ਹਿਲਾਇਆ ਗਿਆ ਹੈ.

print('[change directory]')
os.chdir(os.path.dirname(os.path.abspath(__file__)))
print('getcwd:      ', os.getcwd())

ਚੱਲਣ ਦਾ ਨਤੀਜਾ.

# [change directory]
# getcwd:       /Users/mbp/Documents/my-project/python-snippets/notebook/data/src

ਇੱਕ ਵਾਰ ਜਦੋਂ ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਫਾਈਲ ਨੂੰ ਪੜ੍ਹਦੇ ਸਮੇਂ ਇਸਨੂੰ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦੀ ਡਾਇਰੈਕਟਰੀ ਨਾਲ ਜੋੜਨ ਦੀ ਜ਼ਰੂਰਤ ਨਹੀਂ ਹੁੰਦੀ. ਤੁਸੀਂ ਸਿਰਫ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦੀ ਡਾਇਰੈਕਟਰੀ ਦੇ ਸੰਬੰਧ ਵਿੱਚ ਮਾਰਗ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦੇ ਹੋ.

print('[set target path 1 (after chdir)]')
target_path_1 = 'target_1.txt'

print('target_path_1: ', target_path_1)

print('read target file:')
with open(target_path_1) as f:
    print(f.read())

print()
print('[set target path 2 (after chdir)]')
target_path_2 = '../dst/target_2.txt'

print('target_path_2: ', target_path_2)

print('read target file:')
with open(target_path_2) as f:
    print(f.read())

ਚੱਲਣ ਦਾ ਨਤੀਜਾ.

# [set target path 1 (after chdir)]
# target_path_1:  target_1.txt
# read target file:
# !! This is "target_1.txt" !!
# 
# [set target path 2 (after chdir)]
# target_path_2:  ../dst/target_2.txt
# read target file:
# !! This is "target_2.txt" !!

ਰਨਟਾਈਮ ਵੇਲੇ ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ ਉਹੀ ਪ੍ਰਕਿਰਿਆ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ.

ਜਿਵੇਂ ਕਿ ਅਸੀਂ ਦਿਖਾਇਆ ਹੈ, ਹੇਠ ਲਿਖੀਆਂ ਵਿਧੀਆਂ ਵਿੱਚੋਂ ਇੱਕ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਰਨਟਾਈਮ ਤੇ ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਤੋਂ ਸੁਤੰਤਰ, ਸਕ੍ਰਿਪਟ ਫਾਈਲ ਦੇ ਸਥਾਨ ਦੇ ਅਧਾਰ ਤੇ ਫਾਈਲਾਂ ਨੂੰ ਲੋਡ ਕਰਨਾ ਸੰਭਵ ਹੈ.

  • ਚੱਲ ਰਹੀ ਫਾਈਲ ਦੀ ਡਾਇਰੈਕਟਰੀ ਅਤੇ os.path.join () ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਚੱਲ ਰਹੀ ਫਾਈਲ ਤੋਂ ਪੜ੍ਹਨ ਵਾਲੀ ਫਾਈਲ ਦਾ ਅਨੁਸਾਰੀ ਮਾਰਗ ਜੋੜੋ.
  • ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਚੱਲ ਰਹੀ ਫਾਈਲ ਦੀ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਭੇਜੋ.

ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਹਿਲਾਉਣਾ ਸੌਖਾ ਹੈ, ਪਰ ਬੇਸ਼ੱਕ, ਜੇ ਤੁਸੀਂ ਇਸ ਤੋਂ ਬਾਅਦ ਹੋਰ ਫਾਈਲਾਂ ਨੂੰ ਪੜ੍ਹਨਾ ਜਾਂ ਲਿਖਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਹ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣ ਦੀ ਜ਼ਰੂਰਤ ਹੈ ਕਿ ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ.

ਪਿਛਲੀਆਂ ਉਦਾਹਰਣਾਂ ਦੇ ਨਤੀਜਿਆਂ ਦਾ ਸਾਰ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਹੈ.

pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook

python3 data/src/file_path.py
# getcwd:       /Users/mbp/Documents/my-project/python-snippets/notebook
# __file__:     data/src/file_path.py
# basename:     file_path.py
# dirname:      data/src
# abspath:      /Users/mbp/Documents/my-project/python-snippets/notebook/data/src/file_path.py
# abs dirname:  /Users/mbp/Documents/my-project/python-snippets/notebook/data/src
# 
# [set target path 1]
# target_path_1:  data/src/target_1.txt
# read target file:
# !! This is "target_1.txt" !!
# 
# [set target path 2]
# target_path_2:  data/src/../dst/target_2.txt
# normalize    :  data/dst/target_2.txt
# read target file:
# !! This is "target_2.txt" !!
# 
# [change directory]
# getcwd:       /Users/mbp/Documents/my-project/python-snippets/notebook/data/src
# 
# [set target path 1 (after chdir)]
# target_path_1:  target_1.txt
# read target file:
# !! This is "target_1.txt" !!
# 
# [set target path 2 (after chdir)]
# target_path_2:  ../dst/target_2.txt
# read target file:
# !! This is "target_2.txt" !!

ਪੂਰਨ ਮਾਰਗ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਦਾ ਨਤੀਜਾ ਇਸ ਪ੍ਰਕਾਰ ਹੈ.

pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook

python3 /Users/mbp/Documents/my-project/python-snippets/notebook/data/src/file_path.py
# getcwd:       /Users/mbp/Documents/my-project/python-snippets/notebook
# __file__:     /Users/mbp/Documents/my-project/python-snippets/notebook/data/src/file_path.py
# basename:     file_path.py
# dirname:      /Users/mbp/Documents/my-project/python-snippets/notebook/data/src
# abspath:      /Users/mbp/Documents/my-project/python-snippets/notebook/data/src/file_path.py
# abs dirname:  /Users/mbp/Documents/my-project/python-snippets/notebook/data/src
# 
# [set target path 1]
# target_path_1:  /Users/mbp/Documents/my-project/python-snippets/notebook/data/src/target_1.txt
# read target file:
# !! This is "target_1.txt" !!
# 
# [set target path 2]
# target_path_2:  /Users/mbp/Documents/my-project/python-snippets/notebook/data/src/../dst/target_2.txt
# normalize    :  /Users/mbp/Documents/my-project/python-snippets/notebook/data/dst/target_2.txt
# read target file:
# !! This is "target_2.txt" !!
# 
# [change directory]
# getcwd:       /Users/mbp/Documents/my-project/python-snippets/notebook/data/src
# 
# [set target path 1 (after chdir)]
# target_path_1:  target_1.txt
# read target file:
# !! This is "target_1.txt" !!
# 
# [set target path 2 (after chdir)]
# target_path_2:  ../dst/target_2.txt
# read target file:
# !! This is "target_2.txt" !!

ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਨੂੰ ਟਰਮੀਨਲ ਵਿੱਚ ਲਿਜਾਣ ਅਤੇ ਉਸੇ ਸਕ੍ਰਿਪਟ ਫਾਈਲ ਨੂੰ ਚਲਾਉਣ ਦਾ ਨਤੀਜਾ ਹੇਠਾਂ ਦਿਖਾਇਆ ਗਿਆ ਹੈ. ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਉਹੀ ਫਾਈਲ ਪੜ੍ਹੀ ਜਾ ਸਕਦੀ ਹੈ ਭਾਵੇਂ ਇਸਨੂੰ ਕਿਸੇ ਵੱਖਰੇ ਸਥਾਨ ਤੋਂ ਚਲਾਇਆ ਜਾਵੇ.

cd data/src

pwd
# /Users/mbp/Documents/my-project/python-snippets/notebook/data/src

python3 file_path.py
# getcwd:       /Users/mbp/Documents/my-project/python-snippets/notebook/data/src
# __file__:     file_path.py
# basename:     file_path.py
# dirname:      
# abspath:      /Users/mbp/Documents/my-project/python-snippets/notebook/data/src/file_path.py
# abs dirname:  /Users/mbp/Documents/my-project/python-snippets/notebook/data/src
# 
# [set target path 1]
# target_path_1:  target_1.txt
# read target file:
# !! This is "target_1.txt" !!
# 
# [set target path 2]
# target_path_2:  ../dst/target_2.txt
# normalize    :  ../dst/target_2.txt
# read target file:
# !! This is "target_2.txt" !!
# 
# [change directory]
# getcwd:       /Users/mbp/Documents/my-project/python-snippets/notebook/data/src
# 
# [set target path 1 (after chdir)]
# target_path_1:  target_1.txt
# read target file:
# !! This is "target_1.txt" !!
# 
# [set target path 2 (after chdir)]
# target_path_2:  ../dst/target_2.txt
# read target file:
# !! This is "target_2.txt" !!

Copied title and URL