2009-11-03 53 views
4

我在學習如何解析Python中的.txt文件。這導致我打開解釋器(terminal> python)並玩弄。但是,我似乎無法指定正確的路徑。 Python首先看什麼?Python首先在哪裏查找文件?

這是我的第一個步驟:

f = open("/Desktop/temp/myfile.txt","file1") 

這公然不起作用。任何人都可以建議嗎?

+0

作品對我來說,檢查你的路徑 – ennuikiller 2009-11-03 16:50:19

+0

@ennuikiller - 真的嗎?它打開了什麼模式? – 2009-11-03 16:52:41

+0

重新標記,因爲這個問題確實不會造成任何解析問題。 – PaulMcG 2009-11-03 18:31:03

回答

8

編輯:哦,是的,你的第二個參數是錯誤的。甚至沒有注意到:)

Python看起來你告訴它的文件打開。如果你打開/ home/malcmcmul中的解釋器,那麼它將成爲活動目錄。

如果指定一個路徑,那就是它的外觀。你確定/ Desktop/temp是一個有效的路徑嗎?我不知道/ Desktop是一個根文件夾。

一些例子:

  • 如果我有一個文件:/home/bartek/file1.txt

  • 而且I型python到目錄內讓我解釋/home/bartek/

  • 這將工作並取file1.txt ok:f = open("file1.txt", "r")

  • 這不起作用:f = open("some_other_file.txt", "r"),因爲該文件位於某種其他目錄中。

  • 只要我指定正確的路徑這將工作:f = open("/home/media/a_real_file.txt", "r")

+0

謝謝!我不太確定它會在哪裏看,我不喜歡指定每一位導演!再次感謝! – Federer 2009-11-03 16:52:37

2

首先,第二個參數是權限位:「R」讀取,「W」寫「一個「附加。 「file1」不應該在那裏。

8

這不起作用,因爲你的錯誤語法爲open

在提示符的解釋試試這個:

>>> help(open) 
Help on built-in function open in module __builtin__: 

open(...) 
    open(name[, mode[, buffering]]) -> file object 

    Open a file using the file() type, returns a file object. 

所以第二個參數是開放模式。 A quick check of the documentation我們試試這個代替:

f = open("/Desktop/temp/myfile.txt","r") 
+0

+1表示良好的習慣,在正確的答案之上:-) – RedGlyph 2009-11-03 17:13:31

2

嘗試:

f = open('Desktop/temp/myfile.txt', 'r') 

這將打開文件相對於當前目錄。如果您想使用絕對路徑打開文件,則可以使用'/Desktop/temp/myfile.txt'。打開函數的第二個參數是模式(不知道在你的例子中file1應該是什麼意思)。

關於這個問題 - Python遵循OS方案 - 在當前目錄中查找,並且如果查找模塊,則在以後查找sys.path。如果你想從一些子目錄打開文件,使用os.path。加入,如:

import os 
f = open(os.path.join('Desktop', 'temp', 'myfile.txt'), 'r') 

然後,您可以安全地避免與'/'和'\'的混亂。

有關使用打開函數的更多信息,請參閱built-in open function的文檔。

-1

此:

import os 
os.path 

應該告訴你在哪裏蟒蛇看起來第一。當然,如果你指定絕對路徑(如你所見),那麼這應該不重要。

另外,正如其他人所說,你在開放的第二個參數是錯誤的。爲了找到這樣做的正確方法,試試這個代碼:

help(open)