我有一個 python 腳本program.py,我想在系統的任何地方都可以訪問它。因此,我使用chmod x并使用了硬鏈接將其放入/somewhere/bin/.
這成功地在program.py任何地方制作了可執行檔案,但同時我無法訪問程式所在的原始目錄/original/dir/program.py。
原目錄中有一個組態檔,在一個檔案夾中:/original/dir/configurations/cfg.txt我也想在系統的任何地方訪問它,例如:program.py configurations/cfg.txt. 我怎樣才能做到這一點?
uj5u.com熱心網友回復:
你不能用硬鏈接來做(因為硬鏈接與同一檔案的任何其他硬鏈接沒有區別,包括原始名稱;出于所有實際目的,它是一個“原始”名稱),但如果你使用一個符號鏈接,你可以通過它來找到真正的目錄os.path.realpath。
from os.path import dirname, join, realpath
realdir = dirname(realpath(__file__))
cfgfile = join(realdir, 'configurations', 'cfg.txt')
或with pathlib,Path.resolve用于類似效果:
from pathlib import Path
realdir = Path(__file__).resolve().parent
cfgfile = realdir / 'configurations' / 'cfg.txt'
uj5u.com熱心網友回復:
需要訪問系統中任何位置的檔案夾似乎有點矯枉過正。為什么不讓用戶提供他們想要的配置的命令列引數(例如python program.py cfg1.txt),然后在程式中有一些基本邏輯來獲取檔案:
import os
cfgArg = # string command line argument
cfgPath = os.path.join('configurations', cfgArg)
uj5u.com熱心網友回復:
如果我正確理解了您的要求,那么您在檔案夾中有一個帶有特定配置的 python prog 并且您需要。
- 不將檔案移動到其他檔案夾
- 腳本需要訪問配置。
很好,我認為您可以對 /usr/bin 或 $PATH 中的任何檔案夾進行軟鏈接,因此您無需移動原始檔案,而是可以在系統范圍內執行它。
ln -s origin destination
所以
ln -s /original/dir/program.py /usr/bin/program.py
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/489287.html
標籤:python-3.x linux 重击
上一篇:Mockito期望引數不匹配
下一篇:識別兩個字典串列之間的更改值
