2012-10-08 103 views
5

我有一個目錄裏面,下面的Python腳本調用「測試」我的Linux桌面上:運行一個Python腳本中另一個目錄

#!/usr/bin/python 

f = open('test.txt','w') 
f.write('testing the script') 

所以這是/Home/Desktop/test/script.py

如果我去的目錄和類型內./script.py它工作正常,並創建test.txt文件。

但是由於某些原因,我無法從桌面運行腳本(/Home/Desktop)。例如,我嘗試了./test/script.py,但沒有奏效。

該腳本的文件權限爲755,目錄爲777

任何幫助,將不勝感激。

+0

您能否提供您在控制檯上看到的錯誤消息? – ernie

+0

沒有錯誤信息,所以我猜腳本正在執行,但無法創建文件。 –

+0

如果無法創建文件,則應該拋出I/O錯誤。我猜它是在創建文件,而不是你期望的地方。另外,正如我的回答中所提到的,'w'模式會截斷文件,所以如果文件存在(除修改時間外),則不會看到任何更改。 – ernie

回答

13

您可以使用os.path.dirname()__file__獲得絕對路徑是這樣的:

#!/usr/bin/python 

import os # We need this module 

# Get path of the current dir, then use it to create paths: 
CURRENT_DIR = os.path.dirname(__file__) 
file_path = os.path.join(CURRENT_DIR, 'test.txt') 

# Then work using the absolute paths: 
f = open(file_path,'w') 
f.write('testing the script') 

這種方式的腳本將工作在與腳本相同的目錄放置的文件,無論您執行它的地方。

+0

工作就像一個魅力。非常感謝。我猜沒有改變腳本正在執行,但它無法創建文件,因爲它試圖將它放在/ Desktop而不是/ Desktop/test,是否正確? –

+0

@DanielS:沒錯! :)我很高興我的幫助。 – Tadeck

+1

非常感謝。 –

0

「等等」沒有多大意義。

你在文件系統中的哪個位置?目錄測試 相對於你的位置的位置是什麼?

您是否試過完全合格的路徑? 例如,

/home/daniel/test/script.py 
+0

我在桌面上,'test'目錄在裏面。我編輯了問題以包含此信息。謝謝 –

1

在你open('test.txt', 'w')open(r'./test.txt', 'w')。當你運行它,用「蟒蛇script.py看看是否能工程

+0

你的意思是使用python ./test/script.py?因爲我說我想從目錄外運行腳本。 –

+0

是的。我想你可以將參數推廣到'python'可執行文件。 – alvonellos

+0

Gotcha。你也意味着打開(r'./test.txt','w')或打開('./test.txt','w'),而不是'r')。 –

0

你在執行什麼目錄 您可以嘗試使用:?

import os 

print os.getcwd() 

驗證工作目錄是什麼你認爲它是

1

如果您的密碼是/Desktop/test,然後您嘗試執行./test/script.py,則您正在嘗試運行/Desktop/test/test/script.py的腳本。更可能的是,你只是想做./script.py

順便說一句,你的問題會更有益的,如果你提供了你在命令行中得到了錯誤的消息,而不是隻是說如果腳本運行「沒有工作」

並沒有什麼被迴應到控制檯,很可能它正在工作。請注意0​​。也許你想使用+?

+0

沒有錯誤消息,我現在意識到必須意味着腳本正在執行,但該文件未被打開/創建,對不對? –

+0

@DanielS聽起來很喜歡它 - 可能值得在打印聲明中加入一個完整的檢查。 。 .does test.txt存在,它有什麼權限? – ernie

+0

我會探索更多,看看我是否會發現正在發生的事情。 –

相關問題