2015-04-21 199 views
0

我有一個Python/Sikuli腳本,我需要將文件的位置存儲在變量中。返回文件的文件路徑,而不是當前目錄

我在一個位置擁有IDE,並且該文件存儲在不同的目錄中。
IDE:C:\ Sikuli \ runIDE.cmd
文件:C:\腳本\文件\ HelloWorld2.sikuli \ HelloWorld.py

現在我用os.getcwd()來獲取IDE的位置。
但是,如何返回文件「HelloWorld.py」的完整目錄路徑?

我也使用os.path.abspath("HelloWorld2.py")os.path.dirname(os.path.realpath('HelloWorld2.py'))
但也沒有工作。
任何人都可以幫助我嗎?

+1

重複(或至少相關):[http://stackoverflow.com/questions/7162366/get-location-of-the-py-source-file](http://stackoverflow.com/questions/7162366/get-location-of-py-source-file) – alcedine

+0

您是否嘗試過'os.path.realpath(__ file __)'?有很多關於這個的SO帖子; '__file__'屬性是從模塊加載的文件的路徑名,如果它是從文件加載的。 – 7hibault

回答

0

Sikuli似乎有一些問題與該__file__
什麼用Sikuli和Python的工作是:

os.path.dirname(getBundlePath()) 

編輯下面的問題:
要獲取目錄中您可以執行的文件的名稱:

path = os.path.dirname(getBundlePath()) 
directory = os.listdir(path) 
for file in directory: 
    print(file) 
+0

但是,這不幸的是獲取'myscript.sikuli'目錄的父目錄。你如何獲得你放在* .sikuli腳本目錄中的文件的完整路徑? – jhabbott

+0

@jhabbott,我給答案添加了一個示例代碼,可以做到這一點。要獲得每個文件的完整路徑,您可以創建一個字符串並在該字符串中添加'path'和'file'。 – Tenzin

+0

列出與腳本目錄相同的目錄中的文件,很可能是其他無關的腳本。例如。如果我將腳本保存在'/ home/joe/sikuliscripts /'中,並且一個包是'script1.sikuli' - 那麼腳本中的'getBundlePath()'給出'/ home/joe/sikuliscripts /',而我想要的是'/home/joe/sikuliscripts/script1.sikuli' - 我認爲這是Sikuli的一個缺陷。 – jhabbott

2

要獲得包含執行文件,使用該目錄的完整路徑:

os.path.dirname(os.path.abspath(__file__)) 
+0

我也試過,但後來我得到:[error] NameError(name'__file__'未定義) – Tenzin

+1

@tenzin:看​​到這個問題:https://answers.launchpad.net/sikuli/+question/240852 – RvdK

+0

@tenzin或這一個http://stackoverflow.com/questions/16771894/python-nameerror-global-name-file-is-not-defined但dirname將返回目錄的路徑(不是執行文件的路徑)雖然 – 7hibault

相關問題