我想重构此代码以获取未知参数。我的意思是,现在它通过一个URL列表查看(例如:http://www.blahblah.com/something/somethingelse?a=8&b=2&c=3)。代码在查询(?)上拆分,然后再次在&符号上拆分(&)。在拆分之后,将拆分的部分(即:a = b)放入适当命名的文件(a_file.txt
)中。问题是,如果我的程序遇到一个不在哈希列表中的未知参数怎么办?我猜想,这些信息将会丢失。所以我的问题是Python是否具有可以的功能,A。构建一个之前不在哈希列表中的全新文件,并将其命名为适当的B.并将信息放入诸如(char_file.txt
)的文件中。因此,如果存在未知字符,请为其创建一个文件并将信息附加到其中。任何帮助表示赞赏。
import urlparse
def parse_file(input_file):
tags = {tag: tag + '_file.txt' for tag in {'blog',
'p','attachment_id','lang',
'portfolio','page_id','comments_popup',
'iframe','width','height'}}
with open(input_file) as input:
for line in input:
parsed_url = urlparse.parse_qsl(urlparse.urlparse(line).query)
if parsed_url > 0:
for key, value in parsed_url:
if key in tags:
with open(tags[key], 'a') as output_file:
output_file.write(value)
else:
print key + " not in tags."
else:
print(line + " does not yield query.")
parse_file()
答案 0 :(得分:0)
为什么你有tags
变量?只是做你目前正在做的同样的事情,但是把整个tags
的东西都拿出来,它应该像魅力一样。在"a"
- 模式下打开文件会创建它,如果它还不存在的话。
替换
for key, value in parsed_url:
if key in tags:
with open(tags[key], 'a') as output_file:
output_file.write(value)
else:
print key + " not in tags."
与
for key, value in parsed_url:
with open(key+"_file.txt", 'a') as output_file:
output_file.write(value)
然后,您当然也可以删除顶部的tags
声明