2013-02-07 28 views
-1

我開發了一個簡單的bubblesort算法,它在變量myList = say,[1,4,2,3,5]時工作,但我需要從一個外部文本文件。這是我的。Python - 從外部文本文件中排序數據

#New Bubble sort 
f = open('Users/Luke/Dropbox/Programming/numbers.txt', 'r') 
my_list = f.read() 
print(my_list) 
length = len(my_list) 

for i in range(length): 
    for j in range(length-1): 
     if my_list[j] > my_list[j+1]: 
      my_list[j], my_list[j+1] = my_list[j+1], my_list[j] 
      print(my_list) 

f.close() 

這將返回我:

FileNotFoundError: [Errno 2] No such file or directory: 'Users/Luke/Dropbox/Programming/numbers.txt' 

目錄確實存在,而且我已經嘗試了不同的變化(前/後斜線,包括 'C:/')等

+0

要小心,你是不是你的解析 'numbers.txt' 文件。你最好把它們解析成只有'int'的列表:是'',''大於''1'嗎? – thkang

+0

看起來像Os X路徑,對吧? – xvorsx

回答

1

你錯過了第一個「/」 /Users/Luke/Dropbox/Programming/numbers.txt

+0

我解決了這個問題,並得到了同樣的錯誤。我會補充一點,我嘗試在Linux中打開一個文本文件,它工作。是否有一個特殊的協議,用於在Windows下打開文本文件? –

0

你需要反斜槓,而不是正斜槓是這樣的:

file = open('C:\\Users\\Luke\\Dropbox\\Programming\\numbers.txt' ,'r')

而且由於反斜槓是一個轉義字符,你需要添加他們兩個(第一個逃脫第二個)的

+1

Windows還可以讀取正斜槓,並使其更容易在眼睛上....自己測試。 –

+0

@InbarRose,我沒有意識到這一點。對便攜性有意義。謝謝。 – jimhark

0

你可能需要的東西,如:

'C:\\Users\\Luke\\Dropbox\\Programming\\numbers.txt' 

或者

r'C:\Users\Luke\Dropbox\Programming\numbers.txt' 

請記住'\'是Python中的轉義字符。

0

得到絕對明確的文件路徑:

  • 轉到文件,CTRL +右鍵單擊,然後從菜單中選擇 「複製爲路徑」。

  • 或者打開文件屬性並獲取文件夾名稱,然後您可以將其名稱組合在一起以獲取完整路徑。

  • 或者您可以創建快捷方式,然後查看 快捷方式的屬性以查看目標位置。

  • 或者你可以拖動文件到一個開放的控制檯,看看什麼路徑顯示 了。

換句話說,這不應該是確定一個問題...

爲了解決這個問題在你的程序中的情況下,它是開放的輸入,檢查os.path.exists(path)

0

您應該使用os.path 說明:os.path.join 這個函數爲你處理路徑分隔符,所以它將始終是獨立於os的正確的。

像:

從OS導入路徑
my_path的= path.join( '用戶', '盧克', 'Dropbox的', '編程',「數字。TXT')

如需進一步信息,請參見: http://docs.python.org/2/library/os.path.html