2014-03-01 161 views
-4

問題:在Python中打開文件

如何在python中打開每行包含一個整數值的文件。讓python讀取文件,將數據存儲在列表中,然後打印列表?

我必須要求用戶輸入文件名,然後執行上述所有操作。用戶輸入的文件將在以下功能中用作'alist'。

感謝

def selectionSort(alist): 
    for index in range(0, len(alist)): 
     ismall = index 
     for i in range(index,len(alist)): 
      if alist[ismall] > alist[i]: 
       ismall = i 
     alist[index], alist[ismall] = alist[ismall], alist[index] 
    return alist 
+3

你真正想做到這一點?如果是這樣,請發佈您的代碼。 – isedev

+0

請同時提供樣本輸入和輸出 –

回答

1

我認爲這正是你所需要的:

file = open('filename.txt', 'r') 
lines = [int(line.strip()) for line in file.readlines()] 
print(lines) 

我沒有在這裏使用一個with聲明,因爲我不知道你是否打算使用該文件進一步在您的代碼中。


編輯:您可以使用變量作爲參數只是分配一個輸入變量...

filename = input('Enter file path: ') 

再按上面的東西,除了打開文件...

file = open(filename, 'r') 

最後,將列表lines提交到您的功能selectionSort

selectionSort(lines) 

:這如果該文件已經存在,只會工作,但我相信這是你的意思,因爲是在創建一個新的沒有意義,因爲這將是空的。另外,如果指定的文件不在當前工作目錄中,則需要指定完整路徑 - 而不僅僅是文件名。

+0

我怎樣才能提示用戶輸入文件名,然後做所有上面的東西? – Learner

+0

@Learner見編輯。 –

1

打開Python中的文件及其內容存儲在一個字符串的最簡單方法:

with open('file.txt') as f: 
    contents = f.read() 

您的問題:

with open('file.txt') as f: 
    values = [int(line) for line in f.readlines()] 
print values 

編輯:正如在其他的答案中的一個注意到的,變量f只存在於縮進with - 塊。這種結構會在某些錯誤情況下自動處理文件關閉,否則您必須使用finally -construct。

+0

這隻有在OP由於打印語句而使用Python 2時纔有效。 –

0

可以整數列表分配給一個字符串或列表

file = open('file.txt', mode = 'r') 
values = file.read() 

值將具有可被直接印刷

file = open('file.txt', mode = 'r') 
values = file.readlines() 

值將具有對於每個整數列表的字符串,但不能直接打印

0

f.readlines()讀取文件中的所有行,但如果文件包含很多行

可以代替試試這個:

new_list = [] ## start a list variable 

with open('filename.txt', 'r') as f: 
    for line in f: 
     ## remove '\n' from the end of the line 
     line = line.strip() 

     ## store each line as an integer in the list variable 
     new_list.append(int(line)) 

print new_list