gpt4 book ai didi

python - 规范/惯用语 "do what I mean"传递一个字符串,该字符串可以是文件名、URL 或要处理的实际数据

转载 作者:行者123 更新时间:2023-11-28 20:54:39 24 4
gpt4 key购买 nike

Python 库公开一个通用的“opener”函数并不少见,它接受一个字符串作为它们的主要参数,该字符串可以表示一个本地文件名(它将打开并对其进行操作),一个 URL(它将下载并对其进行操作)或数据(它将对其进行操作)。

这是 an example from Feedparser .

我的问题是:是否有标准的“正确”方法来做到这一点?或者,实现该功能的模块(可能作为装饰器)?

最佳答案

最终,任何实现此行为的模块都将解析该字符串。并根据结果行事。例如,在 feedparser 中,他们正在解析 url:

if urlparse.urlparse(url_file_stream_or_string)[0] in ('http', 'https', 'ftp'):
# do something with the url
else:
# This is a file path
return open(url_file_stream_or_string)

这是一个很好的装饰器,可以为你做这件事:

import urlparse, urllib

def opener(fun):
def wrapper(url):
if urlparse.urlparse(url)[0] in ('http', 'https', 'ftp'):
return fun(urllib.urlopen(url))
return fun(open(url))
return wrapper

@opener
def read(stream):
return stream.read()

read('myfile')
read('http://www.wikipedia.org')

关于python - 规范/惯用语 "do what I mean"传递一个字符串,该字符串可以是文件名、URL 或要处理的实际数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/845408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com