使文件在Python中可写和可读

时间:2013-07-24 11:52:33

标签: python

我正在查找和替换脚本以修复我网站上的一些内容。我使用的是Python 3.3.2。

这是我的代码:

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()

问题是python告诉我该文件不可读。如果我将f = open('random.html','w')更改为f = open('random.html','r'),则说它不可写。这是有道理的,为什么它需要两者,但如果我把两者都放进去,它告诉我必须有一个读/写的东西。我很肯定这是基本的东西,我无法弄明白。感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

f = open('random.html','r +')

来源:http://docs.python.org/3/tutorial/inputoutput.html

答案 1 :(得分:0)

您可以使用r+w+作为第二个参数在两种模式下打开它。请参阅here

另外,您是否考虑过使用with声明?它们更像pythonic:

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

这具有很大的优势,您之后无需手动执行.close()

  • strToSearch也可以重写为strToSearch = ''.join(f.readlines())

  • 您是否考虑过使用像BeautifulSoup这样的HTML解析器?比正则表达更好更容易:)