0

CodeIgniterLinuxでcronスケジュールPython 2.7プログラムを使用して、アプリケーションツリー内からさまざまなHTMLファイルパーツ、画像サムネイルなどを作成しています。実際の Python プログラムCodeIgniterは、アプリケーション ディレクトリの 1 つ下のサブディレクトリのツリーの下に次のように存在します。

codeigniter/web-root 
    |
    application
    |   |    
    |   scripts
    |   |   |
    |   |   my-program.py
    |   | 
    |   database
    |       |
    |       database.sqlite 
    images

モジュールのメソッドを使用して、codeigniter/web-rootディレクトリを決定したいと考えています。ただし、への絶対パスは開発環境と本番環境で異なるため、このパス情報を Python プログラム自体にハードワイヤードすることは避けたいと考えています。my-program.pyos.pathcodeigniter/web-root

現在のスクリプトは、次の構成を使用して、両方の環境でスクリプト自体の 2 つ上のディレクトリ レベルにある「codeigniter/web-root」の絶対パスを決定します。

#!/bin/env python2.7

import os.path

ci_root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

os.path.dirname複数の呼び出しを使用せずに最上位 (ci_root) ディレクトリを決定するよりクリーンな方法はありますか?

4

2 に答える 2

1

「上 3 つのディレクトリ」の相対パスに基づいて実際のパスを見つけ、その実際のパスの最後の部分を抽出します。

【追記:ご指摘を受けて修正しました。私の意見では、あなたのチェーンdirnameがより良くなるのに十分なほど複雑になっています。少なくとも、何が起こっているのかを理解するのは簡単です。]

from os import path as p
_, ci_root = p.split(p.abspath(p.join(__file__, '../../..')))
于 2013-06-04T17:52:52.193 に答える