如何用Python脚本从GitHub的.py文件中导入列表
从GitHub导入列表的解决办法
先处理字节字符串
你拿到的b"names = ['1', '2', '3', '4', '5']\r\n"是字节类型,得先转成普通字符串:byte_data = b"names = ['1', '2', '3', '4', '5']\r\n" text_data = byte_data.decode('utf-8')安全提取列表的两种方法
方法一:用ast.literal_eval(推荐,不会执行恶意代码)
先把字符串里的列表部分拆出来,再解析成真实的列表:import ast # 拆分出等号后面的列表内容,去掉多余的换行和空格 list_text = text_data.split('=', 1)[1].strip() # 解析成Python列表 names = ast.literal_eval(list_text) print(names) # 输出:['1', '2', '3', '4', '5']方法二:用
exec执行字符串(只在你完全信任这个GitHub文件时用)
直接执行这段字符串代码,就能直接用names变量:exec(text_data) print(names) # 输出:['1', '2', '3', '4', '5']更规范的远程模块导入方式
如果想像导入本地模块一样用GitHub上的文件,先确保你拿到的是GitHub文件的原始内容链接(不是网页链接),然后用下面的代码加载:import importlib.util import urllib.request # 替换成你自己的GitHub原始文件链接 raw_url = "https://raw.githubusercontent.com/你的用户名/你的仓库名/分支名/目标文件名.py" with urllib.request.urlopen(raw_url) as res: code_content = res.read() # 创建并加载远程模块 module_spec = importlib.util.spec_from_loader("remote_list", loader=None, origin=raw_url) remote_module = importlib.util.module_from_spec(module_spec) exec(code_content, remote_module.__dict__) # 直接调用模块里的列表 print(remote_module.names)
内容的提问来源于stack exchange,提问作者luis
相关产品推荐
相关产品推荐

