我已经在Python(2.7.6)中启动了一个项目,我从不同的站点下载文件。 每个站点都有自己的类和一些不同文件中的函数。
所以我的工作目录看起来有点像这样:
/Sites
- __init__.py
- site1.py
- site2.py
- site3.py
- ...
- siteN.py
/Tools
- __init__.py
- downloader.py
- analyser.py
main.py
但对于大多数网站,我需要为urllib2使用不同的标头。通常我会这样做:
html = urllib2.urlopen(embed_url).readlines()
但有时我需要将其更改为:
headers = {'User-Agent' : 'Mozilla/5.0'}
req = urllib2.Request(embed_url, None, headers)
html = urllib2.urlopen(req).readlines()
但是每次为项目中的每个文件执行此操作时,似乎必须有更好的方法。我怎样才能为网站,工具中的所有文件以及main.py中的所有文件推广这个“补丁”,而不必在每个文件中重写它?
也许标题有点令人困惑,但我不知道如何解释它。
非常感谢!
答案 0 :(得分:0)
当然假设我们总是谈论同一条线。
find -name *py -exec sed -i 's|html = urllib2.urlopen(embed_url).readlines()|headers =\n{'User-Agent' : 'Mozilla/5.0'}\nreq = urllib2.Request(embed_url, None, headers)\nhtml = urllib2.urlopen(req).readlines()\n|' {} +
我应该警告你,这行会改变你的文件,而不会要求你确认,所以你可以考虑在没有sed' s -i(就地)标志的情况下运行它,并确保你得到你的输出期待。