2012-11-19 130 views
0

我正在編寫代碼,首先將兩個.txt文件讀入程序,然後再將這兩個.txt文件組合起來,並使用生成的文件執行多個任務。到目前爲止,我可以讀取文件並將它們分配給變量,並且可以分別打印這兩個庫,但是我無法弄清楚如何組合這些文件。庫或數據庫連接

到目前爲止,我已經寫的代碼看起來是這樣的:

def ReadAndMerge(): 
    library1=input("Enter 1st filename to read and merge:") 
    library2=input("Enter 2nd filename to read and merge:") 
    namelibrary1= open(library1, 'r') 
    namelibrary2= open(library2, 'r') 
    library1contents=namelibrary1.read() 
    library2contents=namelibrary2.read() 
    print(library1contents) 
    print(library2contents) 
    combinedlibraries=(library1, 'a') 
    #^this didnt work, but it was what i have tried so far 
    combinedlibraries.write(library2) 
    print(combinedlibraries) 
    return 

ReadAndMerge() 

我試着用另一個庫附加庫,但是Python似乎不喜歡我在做什麼。

圖書館1看起來是這樣的:

Bud Abbott 51 92.3 
Mary Boyd 52 91.4 
Hillary Clinton 50 82.1 

圖書館2如下所示:

Don Adams 51 90.4 
Jill Carney 53 76.4 
Randy Newman 50 41.2 

有誰知道那些相結合兩個庫的方法嗎?

這樣,當我打印組合庫中它看起來像

Bud Abbott 51 92.3 
Mary Boyd 52 91.4 
Hillary Clinton 50 82.1 
Don Adams 51 90.4 
Jill Carney 53 76.4 
Randy Newman 50 41.2 

這些都是簡單的庫 - 如果有人可以的方式有可能超過50名測試更大的庫,並結合方向指向了我這兩個圖書館,這將是偉大的。

+0

定義「結合圖書館」。 –

+0

基本上把圖書館2的內容放在圖書館1的底部,所以它變成了bud abbot mary boyd hillary clinton don adams jill carney randy newman – spenman

+2

你知道如何打開一個文件進行寫入,然後寫入一個字符串嗎?從您提供給我們的代碼示例中,我看起來並不像您(或者至少您忘記鍵入'open'函數,'combinedlibraries'只是一個元組)。我認爲這是你的第一步。之後,實現你想要的是微不足道的。 –

回答

1

正如@PedroRomano評論說的那樣,您的問題的一部分是您錯過了您所稱行不通的行中的open。但是,後面的代碼仍然不能正常工作。

我也認爲覆蓋你的一個起始數據文件可能是一個壞主意。它使你的代碼不再是冪等的,所以多次運行它將繼續產生副作用。

這裏是我,而不是建議:

def ReadAndMerge(): 
    library1filename = input("Enter 1st filename to read and merge:") 
    with open(library1filename, 'r') as library1: 
     library1contents = library1.read() 

    library2filename = input("Enter 2nd filename to read and merge:") 
    with open(library2, 'r') as library2: 
     library2contents = namelibrary2.read() 

    print(library1contents) 
    print(library2contents) 

    combined_contents = library1contents + library2contents # concatenate text 

    print(combined_contents) 

    combined_filename = "combined.txt" # ask user for name here? 
    with open(combined_filename, "w") as combined_file: 
     combined_file.write(combined_contents) 

with聲明採取關閉文件一旦你與他們所做的(當你寫這一點特別重要)的照顧。此外,它使用合併數據的特定文件名,而不是添加到其中一個源文件。

您可能要考慮的一個問題是,您是否真的需要將組合數據集寫入文件。如果您打算重新打開該文件並再次讀取數據,則可以跳過中間步驟,直接使用組合數據。如果這是你想要的,你可以用return combined_contents替換上面代碼的最後三行。最後,與您的實際問題大部分無關的一點:將您的數據稱爲「圖書館」是一個不好的主意。這個詞在計算機編程中有着非常明確的含義(即:從項目之外加載的軟件),並且用它來引用數據是令人困惑的。

+0

謝謝blckknght,您的意見和代碼非常有幫助,我應該怎樣引用我的數據,好像庫因爲是不可接受的術語 – spenman

+0

@spenman :嗯,我不確定是否有一個明顯的術語。我猜「數據」可能是最好的。或者「數據文件」專門引用文件本身。考慮到上下文,使用庫不是太混亂。 – Blckknght