2014-05-19 35 views
-1

我是Python的新手,我試圖改變文本文件中的列表。我正在從Oracle獲取一個列表,並希望將信息添加到列表中,以便將其粘貼到腳本中。我想: 1.打開文本文件 2.對於文本文件中的每一行,連接它與其他一些文本 3.重寫文本文件(或創建一個新文件)以包含新的更改行使用Python更改文本文件中的列表

即: 如果我的列表中有這些行:

-NorthAmerica 
    -SouthAmerica 
    -Asia 

我想改寫這個文本與它連接在一起的列表:

GRANT SELECT ON GEODATA. + line + TO GEO_VIEWER; 

所以它最終會看樣T他:

GRANT SELECT ON GEODATA.NorthAmerica TO GEO_VIEWER; 
GRANT SELECT ON GEODATA.SouthAmierica TO GEO_VIEWER; 
GRANT SELECT ON GEODATA.Asia to GEO_VIEWER; 

任何幫助表示讚賞。謝謝!

+0

目前爲止沒有使用Google搜索,但找不到任何與我想要做的事情相似的東西......它看起來很直接..我甚至不知道如何打開文本文件一種方式,我可以做一個for循環通過每一行.... – Strider

+0

@Strider https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files – jonrsharpe

回答

0

因此,這裏就是我會建議:

  1. 打開使用with結構
  2. 使用format()功能,文件1的內容寫入預設字符串,然後進入文件這兩個文件2

所以代碼元素看起來像這樣:

with open("file_to_be_read.txt", 'r') as fread, open("file_to_be_written.txt", 'w') as fwrite: 
    for line in fread: 
     fwrite.write("GRANT SELECT ON GEODATA.{} TO GEO_VIEWER;\n".format(line[1:])) 

您可能需要稍微調整format()函數以獲得您想要的值。現在它只是執行fread整行,除了第一個字符。

既然你在這個新的,這裏發生了什麼事情的一些更深入的解釋:在處理文件時

with結構是非常有用的,因爲它處理關閉和一些其他的東西。這意味着with,由於忘記關閉文件而導致錯誤發生的可能性大大降低。所以,

with open("file.txt") as f: 
    #Do stuff 

等價於,

f = open("file.txt") 
#Do stuff 
f.close() 

除了使你的代碼更少出錯,而且可以增強可讀性。

format()函數是一個在Python中使用字符串的非常有用的工具(並且稍微隱蔽)。簡短版本是應用format()的字符串中的任何{},使用該函數的參數填充。所以

print "Hello, my name is {}".format("Dave") 

主要生產

"Hello, my name is Dave" 

現在,這當然是一個愚蠢的例子,但有彈性的功能,數額巨大。格式化語法甚至有整個mini-language!你可以用它來表格,產生奇特的輸出,或者各種各樣的東西。

0

你應該包括你迄今爲止所做的代碼,既然你沒有這樣做,我不會給你完整的代碼,而是你自己需要的工具和技能。

好的,所以問題1.打開一個文本文件。當我們這樣做時,我們有幾種方法可以打開文件,如讀,寫,追加,讀寫。如果你想要完整的列表,你可以看到它here。對於我們的工作,我們需要讀取和寫入文件。所以我們想要Readwrite或者(如果你在你的桌子上看)r+。首先,我們來做這件事。

with open('your_file_name.txt','r+') as file: 

所以我們打開了我們的文件。怎麼辦?

我們接下來需要讀取文件。感謝Pyhton偉大的開發者,我們使用了一個非常簡單的命名函數:.read()。所以我們打開了我們的文件並保存在變量file中。讓我們來看看它。

countries = file.readlines() 

別急,我聽到你問,你說read和你使用readlines。這是因爲如果我們使用read,我們會得到一個簡單的字符串,但readlines會返回我們可以循環的列表。好的,所以我們有一個需要寫回文件的字符串列表。所以,讓我們這樣做。令人驚訝的,我們再次呼籲一個簡單地命名爲功能write.

for country in countries: #Loop through all the countries we just read 
     file.write('GRANT SELECT ON GEODATA. ' + country + ' TO GEO_VIEWER') 

這應該這樣做,雖然你可能想玩弄以不同的方式打開文件。例如通過做with open('yourfile.txt','r')打開一個文件並打開包含要讀取的國家的文件。然後,使用with open('newfile.txt','w')創建一個新文件,然後將它們寫入此文件!玩耍!希望我幫助!