首先介绍一下背景:是的,我是 python 新手,但我喜欢涉猎和学习。
目标是这样的:我在这里有一个 Intranet 网站在工作,他们让我们在一个静态服务器上,不允许服务器端脚本,这意味着没有 PHP。因此,当我添加新页面时,我必须使用新链接更新每个怪异页面的菜单。幸运的是,我的计算机上安装了一个名为 ArcGIS 的应用程序,并安装了 python。所以我想把一个脚本放在一起会很好标签,如<!--begin menu-->
和<!--end menu-->
,带有“menu.txt”中的文本
所以我开始寻找并找到了这段代码:
with open('menu.txt', 'r') as f:
# read entire file into file1
# ASSUMING 'file1.txt' is relatively small...
file1 = f.read()
with open('test.html', 'r') as f:
# ASSUMING 'file2.txt' is relatively small...
file2 = f.read() # read file into file2
# index() will raise an error if not found...
f1_start = file1.index('<!--123-->')
f1_end = file1.index('<!--321-->', f1_start) # look for '//end' after '//start'
f2_start = file2.index('<!--123-->')
f2_end = file2.index('<!--321-->', f2_start)
# replace file2 lines with proper file1 lines
file2[f2_start:f2_end] = file1[f1_start:f1_end]
with open('test.html', 'w') as f:
f.write(file2)
我也看到了很多使用re
,replace
等的例子,但似乎没有什么与我需要的有关。无论如何,现在我只是在同一目录中的一个文件上尝试它,但是当我在我的 linux 机器或 windows python shell 上运行它时,我得到:
Traceback (most recent call last):
File "P:\webpages\filereplace.py", line 18, in <module>
file2[f2_start:f2_end] = file1[f1_start:f1_end]
TypeError: 'str' object does not support item assignment
我认为问题可能是with open
部分,但我不知道。
在这种情况下,menu.txt 的内容本质上是一个开始注释标记<!--123-->
,然后是所有的<div id=menu>blah blah blah</div>
,然后是一个结束注释标记<!--321-->
。在我的 html 文件中,我使用了相同的注释标签,你得到了图片......
有什么建议么?