2013-07-24 16 views
-2

我正在製作一個查找和替換腳本來修復我網站上的一些內容。我正在使用Python 3.3.2。使文件在Python中可寫和可讀

這裏是我的代碼:

import re 

f = open('random.html', 'w') 

strToSearch = " " 

for line in f: 
    strToSearch += line 

patFinder1 = re.compile('<td>Sermon Title</td>\ 
      <td><audio preload="none" controls src="http://www.orlandobiblechurch.org/Audio/\d{6}ldm.mp3"></audio>\ 
      </td>\ 
     </tr>') 

findPat1 = re.search(patFinder1, strToSearch) 

findPat1 = re.findall(patFinder1, strToSearch) 

for i in findPat1: 
    print(i) 

subFound = patFinder1.sub('<td>Lord\'s Day Morning</td>\ 
      <td><audio preload="none" controls src="http://www.orlandobiblechurch.org/Audio/\d{6}ldm.mp3"></audio>\ 
      </td>\ 
     </tr>', strToSearch) 
print(subFound) 

f.write(subFound) 
f.close() 

的問題是,蟒蛇告訴我,該文件無法讀取。如果我將f = open('random.html','w')更改爲f = open('random.html','r'),則表示它不可寫。這是合理的,爲什麼它需要兩個,但如果我把它們都放進去,它告訴我必須有一個讀/寫的東西。我肯定這是一個基本的東西,我無法弄清楚。感謝您的任何幫助,您可以提供。

+1

您是否嘗試過「w +」?我通過快速搜索找到了這個:http://www.tutorialspoint.com/python/python_files_io.htm – erkmene

回答

0

可以使用r+w+作爲第二個參數在這兩種模式將其打開。請參閱here

另外,你有沒有考慮過使用with聲明?他們是更Python:

with open('random.html', 'w+') as f: 
    do_stuff() 

這具有很大的優勢,你不需要做手工.close()之後。

  • strToSearch也可以重新寫爲strToSearch = ''.join(f.readlines())

  • 你使用HTML解析器如BeautifulSoup像這樣的東西考慮?比正則表達式更好,更容易:)

+0

嗯,美麗的湯看起來很有趣,但所有的文檔都談到了在Ubuntu上安裝它。我假設我只需點擊setup.py,對吧? – DogLover

+0

@DogLover你可以,是的。或者一個簡單的'pip install bs4' :) – TerryA