2013-10-16 141 views
1

項目文件夾層次結構看起來像我應該在哪裏放置的config.txt在我的Python項目

ProjectName 
    ->src 
     ->Project.sikuli 
      ->myFile.py 
      ->config.txt 

現在,我把所有的設置變量是保存在我的config.txt和我使用ConfigParser到從中獲取值。我在這裏使用這個配置文件的原因是,當這個sikuli腳本被移動到另一臺機器上運行時,我可以改變它的值(比如路徑,用戶名,密碼),而不是編輯主python腳本'myFile的.py」。
但我現在遇到的問題是,我不希望將配置文件放置在項目之外的某個位置,以便在我的腳本中嘗試從中獲取值時,我不必提及

configParser = ConfigParser.RawConfigParser() 
configfilePath = r'D:\MyWorkspace\ProjectName\src\Project.sikuli\config.txt' 

相反,我想在這裏有相對路徑,以便在從機遷移的項目,以機器,我沒有做任何操作在主腳本:在像MYFILE.TXT再次的絕對路徑'myFile.py'

所以我想要實現的是這樣的: 我應該能夠通過給它的相對路徑引用config.txt文件:

configfilePath = r'D:\MyWorkspace\ProjectName\src\Project.sikuli\config.txt' 

回答

-1

首先,獲得當前執行的Python腳本的路徑:

myPath = os.path.abspath(os.path.dirname(sys.argv[0])) 

然後做一個連接mypath中和「的config.txt」的

configfilePath = os.path.join(myPath, 'config.txt') 
+0

'sys.argv [0])'不一定是當前正在運行的腳本的文件名。 – martineau

-1

我知道你可以通過輸入其獲取從一個Python文件變量和值...

import config 

我會把它在項目

+1

一個'.txt'文件不是一個Python模塊。 – 2013-10-16 07:26:34

+0

我知道......我正在談論一個.py文件,你只用它來放置一些變量。 – Wjars

0

根劇目如果它要保存在同一文件夾中myFile.py,然後在Python腳本,你可以使用這樣的事情:

configfilePath = os.path.join(os.path.dirname(__file__), 'config.txt') 
+0

[錯誤] NameError(名稱'__file__'未定義) – a4aravind

+0

它始終在運行腳本文件時定義,但不在Python交互式控制檯中定義。 – martineau

+1

是的martineau,而是我使用os.path.abspath(os.path.dirname(sys.argv [0]))來獲得目錄名稱,然後我做了一個「config.txt」加入,它的工作。非常感謝 – a4aravind

0

做到這一點,最好的辦法是把文件.sikuli束,就像你在你的例子做了,然後獲取路徑到您的文件是這樣的:

configFilePath = os.path.join(getBundlePath(), 'config.txt') 
相關問題