版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CHAPTER02·教学课件AI编程之基——Python基础从认知到实践本讲范围:2.4Python函数|2.5Python文件操作王丹丹2026.11.05从盘古中医药大模型的"智能单元"到台风预警的数据归档,学会用函数组织与复用代码,用文件操作让数据持久流动。配套教材:《人工智能基础:案例驱动的技术认知与应用》第2章SECTION2.4·CASESTUDY导读案例:当千年中医遇见AI2.4·导读案例——盘古中医药大模型的智慧之路2024年1月23日,浙江九为健康科技股份有限公司与华为云计算技术有限公司在深圳签署合作协议,推出了共同构建的盘古中医药大模型。这一里程碑式的成果,标志着我国在AI与传统医学融合创新方面走在了世界前列。然而,在此之前,中医药的发展长期面临诸多挑战。经验依赖性强:中医讲究"望闻问切、辨证论治",但老中医的经验多靠口传心授,难以标准化传承。术语模糊难量化:"气虚""湿热"等概念缺乏统一的数据表达方式,导致AI难以理解和建模。古籍浩如烟海:《普济方》收录6万余方,《本草纲目》记载1892种药物,人工挖掘效率极低。基层人才短缺:偏远地区缺医少药,年轻医生辨证能力不足,群众对中医的信任度受到影响。面对这些难题,能否用现代科技守护民族瑰宝?能否让沉睡千年的中医智慧,在数字时代焕发新生?正是在这样的时代呼唤下,盘古中医药大模型应运而生。研发团队系统整理了30万余条中医临床记录、10万余条古籍临案文本,融合自然语言处理与知识图谱技术,构建了一个能"读懂经典、理解症状、推荐方剂"的智能系统。它不仅能识别"乏力+盗汗+舌红少苔"对应"阴虚火旺证",还能自动检查"十八反十九畏"配伍禁忌,辅助医生安全开方。盘古中医药大模型已在全国多家中医院试点应用,显著提升了基层诊疗的准确率和效率。一条中国特色的AI发展路径不是照搬西方模式,而是立足本国文化土壤,用科技赋能本土智慧。内容来源:教材2.4节导读案例02SECTION2.4·CASESTUDY案例解析:大模型背后,是一个个"智能单元"2.4·导读案例当我们在感叹这一成就的同时,不禁要问:这样复杂的智能系统,究竟是如何构建出来的?其实,盘古中医药大模型的背后,并非一段庞大混乱的代码,而是由成百上千个结构清晰、功能明确的小模块协同工作而成的——每个辨证判断、每条方剂推荐、每次禁忌检查,本质上都是一个独立封装的"智能单元"。在Python编程中,我们把这样的"智能单元"称为函数(Function)。核心定义每个函数都像一位专业岗位上的"数字医师",各司其职、协同作战。它们可以被反复调用、组合使用,极大地提升了开发效率与系统稳定性,如图2-18所示。函数是Python编程的核心工具,也是AI开发中实现代码模块化、可复用性与团队协作的基础。无论是数据预处理、模型训练,还是结果评估与应用部署,几乎所有AI任务都依赖函数对复杂逻辑的封装与管理。本节将从函数的定义与调用、参数传递机制、变量作用域3个维度出发,结合AI中的典型应用场景,系统讲解函数的核心语法与实践技巧。图2-18"数字医师"示意图(教材原图)读图:30万+中医临床记录、10万+古籍临案文本汇入大模型,经由Python编写的一个个"数字医师"模块处理,最终服务全国中医院试点与基层诊疗提升。内容来源:教材2.4节导读案例(图2-18)03SECTION2.4.1·FUNCTION函数的调用①:内置函数,拿来即用2.4.1·函数函数调用是执行函数功能的过程,通过"函数名+括号"的形式触发,按调用对象可分为内置函数调用与自定义函数调用两类。(1)内置函数调用。Python内置了大量常用函数,无须定义即可直接调用,这类函数在AI数据预处理、结果计算中高频使用。在本节案例讲解中,我们将遇到以下场景:对中医临床症状数据集进行数量统计与排序处理。#模拟中医临床症状数据集tcm_symptoms=["乏力","盗汗","舌红","少苔","口干"]#调用内置函数处理数据symptom_count=len(tcm_symptoms)#统计症状数量sorted_symptoms=sorted(tcm_symptoms)#排序症状名称print(f"临床症状总数:{symptom_count}")print(f"排序后症状:{sorted_symptoms}")理解要点:len()统计元素个数、sorted()返回排序后的新列表——内置函数无须def定义,是Python自带的"常备工具箱";此前学过的print()、input()、range()、set()都属于内置函数。内容来源:教材2.4.1节(1)内置函数调用04SECTION2.4.1·FUNCTION函数的调用②:自定义函数,按需封装2.4.1·函数(2)自定义函数调用。自定义函数是根据具体需求封装的代码块,调用前需要先通过def关键字定义。结合本节案例:通过自定义函数实现中医症状辨证与方剂推荐[这类函数在AI场景(如中医辨证、智能推荐)中可实现逻辑的模块化复用]。#定义中医症状辨证函数defdiagnose(symptoms):
#阴虚火旺证典型症状yin_deficiency={"乏力","盗汗","舌红","少苔"}
iflen(set(symptoms)&yin_deficiency)>=3:
return
"阴虚火旺证"
return
"待辨证"#定义方剂推荐函数defrecommend_recipe(syndrome):recipe_map={"阴虚火旺证":"知柏地黄丸"}
returnrecipe_map.get(syndrome,"暂无推荐方剂")#调用函数patient_symptoms=["乏力","盗汗","舌红","少苔"]syndrome=diagnose(patient_symptoms)recipe=recommend_recipe(syndrome)print(f"辨证结果:{syndrome}")print(f"推荐方剂:{recipe}")✱注在调用函数时,参数数量需要与函数定义匹配,否则会抛出语法错误。若函数有return语句,则调用时可通过变量接收返回值;否则函数默认返回None。串联观察:diagnose()的输出作为recommend_recipe()的输入——函数像"数字医师"一样接力协作。结构拆解:def函数名(参数):→缩进函数体→return返回值。辨证逻辑中调用了2.3节的集合(&交集运算)与字典(get方法),复合数据类型正是函数的"数据处理底座"。内容来源:教材2.4.1节(2)自定义函数调用05SECTION2.4.2·PARAMETERS参数传递①②:位置参数与关键字参数2.4.2·参数参数是函数与外部交互的桥梁,Python支持灵活的参数传递机制,适配AI开发中复杂的参数配置需求——如模型超参数的精细调优、多维度数据的高效输入。(1)位置参数。按函数定义的参数顺序传递是最基础的传递机制,适用于参数较少、含义明确的场景。结合本节案例:计算中药方剂中单味药的剂量。#定义方剂剂量计算函数defcalc_dosage(herb,base_dosage,weight,adjust=True):
ifadjust:
return
f"{herb}:{base_dosage*(weight/60):.1f}g"
return
f"{herb}:{base_dosage}g"#位置参数调用dosage1=calc_dosage("知母",12,55)#关键字参数调用dosage2=calc_dosage(herb="黄柏",base_dosage=10,weight=70)print(dosage1)①位置参数calc_dosage("知母",12,55):实参按位置顺序依次对应herb、base_dosage、weight——顺序错了,数据就张冠李戴。②关键字参数通过"参数名=值"的形式传递参数,无须严格按照顺序,提高代码的可读性,适用于参数较多的场景。内容来源:教材2.4.2节(1)(2)06SECTION2.4.2·PARAMETERS参数传递③:默认参数,常见配置免输入2.4.2·参数(3)默认参数。定义函数时为参数指定默认值,调用时可省略该参数,适用于常用参数固定、特殊场景需要调整的情况。结合本节案例,检查中药方剂的配伍禁忌,默认使用常见的"十八反"禁忌组合,特殊场景可自定义禁忌列表。#带默认参数的配伍禁忌检查defcheck_forbidden(recipe,forbidden=None):
ifforbiddenisNone:forbidden=[("甘草","甘遂"),("乌头","贝母")]recipe_set=set(recipe)
forpairinforbidden:
ifpair[0]inrecipe_setandpair[1]inrecipe_set:
return
"存在配伍禁忌"
return
"无配伍禁忌"默认值None的写法调用时不传forbidden,函数内部自动启用"十八反"默认禁忌组合;传入自定义列表则按新规则检查。案例价值常规方剂一键安检,科研新方灵活配置——默认参数让函数"常用场景零负担,特殊场景可扩展"。使用建议:默认参数要放在位置参数之后定义;调用时既可省略(用默认值),也可用关键字方式显式覆盖——上节calc_dosage的adjust=True正是同款设计。内容来源:教材2.4.2节(3)默认参数07SECTION2.4.2·PARAMETERS参数传递④:可变参数,个数不限2.4.2·参数(4)可变参数。用于接收任意数量的参数,分为可变位置参数(*args)和可变关键字参数(**kwargs),适用于参数数量不确定的场景。在本节案例中,统计多个中医方剂涉及的药材总数,方剂数量不固定时用可变参数接收。#可变参数的多方剂统计defstat_recipes(*recipes):total_herbs=set()
forherbsinrecipes:total_herbs.update(herbs)
return
f"涉及的药材总数:{len(total_herbs)}"#调用示例recipe1=["知母","黄柏","熟地"]recipe2=["甘草","当归","白芍"]print(check_forbidden(recipe1))print(stat_recipes(recipe1,recipe2))*args把任意多个位置实参打包成元组——stat_recipes(recipe1,recipe2)中recipes即(recipe1,recipe2)。**kwargs把任意多个关键字实参打包成字典——AI训练中传超参数(学习率、批次大小……)常靠它灵活接收。案例观察:函数内部用2.3节的集合set+update()自动去重统计药材——可变参数负责"不限量接收",集合负责"去重计数",配合默契。内容来源:教材2.4.2节(4)可变参数08SECTION2.4.2·PARAMETERS参数传递的本质:"引用传递"2.4.2·参数那么,这些参数在函数调用时是如何被传递的呢?Python的答案是:参数传递的本质是"引用传递"。简单来说,函数得到的是一个指向原始对象的内存地址,而不是对象的一个副本,这种机制的行为表现会根据传递对象是可变对象还是不可变对象而有所不同。(5)不可变对象(数字型、字符串、元组)函数内修改会创建新对象,不影响原对象。#不可变对象(字符串)defmodify_herb(herb):herb+="(炒)"
returnherb(6)可变对象(列表、字典、集合)函数内修改会直接作用于原对象。#可变对象(列表)defadd_herb(recipe,herb):recipe.append(herb)
returnrecipe#测试raw_herb="白术";print(modify_herb(raw_herb))#输出修改后的值;print(raw_herb)#原对象未变basic_recipe=["人参","黄芪"];print(add_herb(basic_recipe,"当归"))#列表已修改✱注:默认参数的赋值仅在函数定义时执行一次,避免使用可变对象作为默认参数(如deffunc(lst=[]))。混合使用多种参数时,顺序需要遵循位置参数→关键字参数→默认参数→*args→**kwargs。内容来源:教材2.4.2节(5)(6)及注释09SECTION2.4.3·SCOPE变量作用域:LEGB规则与局部作用域2.4.3·作用域变量作用域是指变量的可见范围和生命周期,Python遵循LEGB规则查找变量(Local→Enclosing→Global→Builtins),明确作用域能避免AI编程中的变量冲突问题。LEGB规则为我们提供了变量查找的宏观框架,但要真正在实践中避免变量污染和冲突,就必须深入理解其背后的四大作用域类型。Local→Enclosing→Global→Builtins查找顺序:由内而外,找到即止(1)局部作用域(Local)①定义:变量在函数或代码块内部定义,仅在该函数内可见。②生命周期:函数执行期间存在,执行结束后销毁。defenrich_knowledge():
#局部作用域:临时存储新增方剂数(仅函数内可用)new_recipes=500
#函数内访问局部变量
print(f"本次新增方剂数:{new_recipes}")
returnnew_recipes#调用函数获取局部变量值(函数执行后变量销毁)added_recipes=enrich_knowledge()局部变量的"隐身"特性new_recipes只在enrich_knowledge()内存在;想在函数外使用,必须通过return交出来——直接访问会触发NameError(下一页验证)。内容来源:教材2.4.3节(1)局部作用域10SECTION2.4.3·SCOPE闭包作用域与全局作用域2.4.3·作用域(2)闭包作用域(Enclosing)①定义:在嵌套函数中,内层函数可访问外层函数的变量(非全局变量)。②适用场景:AI模型中的嵌套函数、装饰器等场景。defbuild_knowledge_base():
#闭包作用域:知识库基础方剂数(仅内层函数可访问)basic_recipes=2000
defcalculate_total():
#内层函数访问闭包作用域变量
returnbasic_recipes#仅返回基础方剂数
returncalculate_total()#调用外层函数,触发内层函数访问闭包变量basic_total=build_knowledge_base()print(f"知识库基础方剂数:{basic_total}")(3)全局作用域(Global)①定义:变量在模块(.py文件)级别定义,对整个模块的函数可见。②修改规则:函数内修改全局变量需要用global关键字声明。#全局变量:在整个模块中可访问total_recipes=10000#模块级定义,属于全局作用域defenrich_knowledge():
globaltotal_recipes#声明要修改全局变量new_recipes=500#局部变量total_recipes+=new_recipes#修改全局变量
print(f"本次新增方剂数:{new_recipes}")
print(f"当前总方剂数:{total_recipes}")enrich_knowledge()#调用函数对比记忆Enclosing管"嵌套函数之间",Global管"整个模块"——左例中basic_recipes对外部隐身、只向内层函数开放;右例中total_recipes全局可见,但函数内要修改它必须先global声明,否则会被当作新建局部变量。内容来源:教材2.4.3节(2)(3)11SECTION2.4.3·SCOPE内置作用域与global关键字2.4.3·作用域(4)内置作用域(Builtins)①定义:Python内置的函数和对象(如print、len、int),全局可用。②注意:避免定义与内置名称相同的变量(如len=10),会遮蔽内置功能。什么是"遮蔽"?一旦写下len=10,按LEGB规则,当前作用域里的len就指向数字10,内置len()函数在这个范围内"被挡住"无法使用。(5)global在局部作用域(如函数内)声明变量引用全局同名变量,声明后可修改全局变量;未声明则视为创建局部变量,不影响全局。learning_rate=0.01defupdate_rate(new_rate):
globallearning_ratelearning_rate=new_rateupdate_rate(0.005)print(f"更新后的学习率:{learning_rate}")跨作用域修改:为什么需要专门的关键字?在明确了Python的四大作用域类型及LEGB规则后,需要进一步探讨不同作用域间变量的修改机制。根据作用域的默认访问规则,内层作用域仅能读取外层作用域的变量,若需要在局部作用域中修改全局变量,或者在嵌套函数的内层函数中修改外层函数的变量,则必须通过专门的作用域关键字进行声明,Python提供了global和nonlocal两个核心关键字来实现这一需求。AI场景联想:learning_rate这样的训练超参数常定义为全局变量,调参函数通过global声明后统一更新——大模型训练中的学习率调度正是这个逻辑。内容来源:教材2.4.3节(4)(5)12SECTION2.4.3·SCOPEnonlocal关键字:突破嵌套的只读限制2.4.3·作用域(6)nonlocal。在嵌套函数的内层函数中声明变量引用外层函数的同名变量,突破只读限制,允许修改外层变量,是实现闭包、嵌套逻辑的关键。#nonlocal关键字示例defouter():count=0
definner():
nonlocalcountcount+=1
returncount
returninner()print(f"计数器值:{outer()}")逐行观察count属于外层outer()的闭包作用域;内层inner()用nonlocal声明后,count+=1改的是外层那一份。没有nonlocal会怎样?count+=1会被当作"新建局部变量",但它还没赋值就被读取,直接报错。globalvsnonlocal一句话区分global指向"模块级"的全局变量;nonlocal指向"外层函数"的闭包变量。两者都是"声明后才能改"——读取不需要声明,修改必须声明。内容来源:教材2.4.3节(6)nonlocal13SECTION2.5·CASESTUDY导读案例:"一档一数"背后的"防灾屏障"2.5·导读案例——从气象数据归档看文件操作的力量2025年,我国东南沿海迎战超强台风"启浪"的紧急时刻,中央气象台的数据中心内,数千个文件进程正高速运转:全国自动站的观测数据从文件中批量提取,台风路径的实时变化被写入日志,归档规则通过配置文件动态调整——这不是单纯的代码操作,而是我国气象防灾体系中"数据守护"的真实图景,传统的人工数据整理正被标准化文件操作带来的"技术革命"彻底重塑。气象数据是防灾减灾的核心依据,但传统存储方式曾让数据价值大打折扣:不同观测站的记录格式杂乱无章,跨站点分析需要人工逐行校对;海量数据归档效率低下,紧急预警时调取历史数据要耗费数小时;实时数据与历史数据衔接断层,台风路径模拟的准确性常受数据缺失的影响,让预报员难以精准预判灾害影响范围。破解之道为破解这些难题,技术团队依托文件操作技术构建了气象数据标准化体系,其核心正是数据的规范存储、高效读取与智能调度——这正是本节要学习的Python文件操作:用代码让每一条气象数据"存得规范、取得迅速、调得智能"。内容来源:教材2.5节导读案例14SECTION2.5·CASESTUDY案例解析:三大体系,15分钟跑赢台风2.5·导读案例(1)标准化文件存储体系将全国观测站的温度、湿度、气压等数据统一存入标准文件,通过固定字段实现跨站点数据的一键关联,消除格式混乱的痛点。(2)实时日志追踪把台风路径、预警等级等动态信息以时序形式写入日志,确保每次数据更新都可追溯、可复盘。(3)动态配置文件调度定义数据归档的路径、频率与阈值,实现不同类型气象数据的自动化分类存储,大幅提升调取效率,如图2-19所示。这一体系不仅让气象数据的处理效率提升300%,更在"启浪"台风预警中发挥关键作用:预报员通过文件操作快速读取近十年相似台风的CSV表格,结合TXT日志与JSON配置,仅15分钟就完成了路径模拟与强度预判,为沿海地区避险争取了宝贵时间。从自动站的传感器采集,到文件的标准化存储,再到预警平台的数据分析,文件操作技术成为连接自然现象与人类防灾行动的"技术纽带",彰显了我国科技工作者用代码守护生命、以数据筑牢安全防线的责任担当。他们用一行行代码告诉世界:中国的技术创新,不仅要支撑"星辰大海"的探索,还要筑牢"民生安全"的底线。图2-19气象数据归档(教材原图)本节导学CSV、TXT、JSON等文件格式的读写方法,正是组织、存储与处理气象观测数据、预警日志、配置参数的核心工具。内容来源:教材2.5节导读案例(图2-19)15SECTION2.5.1·OPEN/CLOSE文件打开与关闭:文件操作的基础步骤2.5.1·文件在Python中,若要对气象数据进行读写,首先需要以合适的模式打开对应的文件;待数据读写操作完成后,必须及时关闭文件,以释放系统分配的内存资源并确保气象数据完整同步到存储介质(如避免台风预警日志、观测数据丢失)。(1)open()方法:Python内置的open()方法专门用于实现文件打开操作。当该方法成功调用时,会返回一个文件对象(文件句柄),后续对气象文件的读写等操作都将通过这个对象来完成。其基本语法格式如下。open(file,mode='r',encoding=None)(2)参数说明:file指定气象文件路径(如观测数据CSV表格、台风预警TXT日志路径);mode指定操作模式[如读(r)、写(w)、追加(a)];encoding指定文本编码格式(气象数据常含中文站点名称,推荐使用UTF-8)。#以只读方式打开全国气象站观测数据CSV表格(用于数据分析)weather_csv=open("national_weather_stations.csv",mode='r',encoding='utf-8')#以追加方式打开台风预警TXT日志(用于记录实时预警信息)typhoon_log=open("typhoon_warning_log.txt",mode='a',encoding='utf-8')#以读写方式打开气象数据归档JSON配置(用于读取规则、更新参数)archive_config=open("weather_archive_config.json",mode='r+',encoding='utf-8')(3)close()方法:专门用于实现文件打开后关闭的方法,该方法没有参数,直接调用即可关闭之前打开的气象文件,避免数据丢失或资源占用。#关闭相关气象文件weather_csv.close()typhoon_log.close()archive_config.close()操作口诀:先开后用、用完即关——open拿到句柄,读写全靠它,close保数据平安。内容来源:教材2.5.1节16SECTION2.5.2·READ文件读取①:read()按需读取2.5.2·读写承接前面的文件打开与关闭,本节将聚焦气象场景下核心的文件读写功能,结合"启浪"台风预警、全国气象站观测数据处理等需求,详细拆解read()、write()等关键方法与实用场景,助力高效实现气象文件的读取与写入。(1)read()方法:读取气象文件。可以从指定气象文件中读取指定字符数或字节数的数据,适用于批量提取观测数据、预警日志等场景。其语法格式:read(size=-1)。参数size表示读取的字符数或字节数,默认值为-1,表示读取整个文件;文本模式表示字符数,二进制模式表示字节数。#读取台风预警TXT日志(查看最近300字符的预警记录)log_file=open('typhoon_warning_log.txt',mode='r',encoding='utf-8')print("最近预警记录(前300字符):")print(log_file.read(300))#读取前300字符的预警数据print("------------------")print("剩余预警记录:")print(log_file.read(500))#继续读取前500字符的预警数据print("------------------")print("完整日志内容:")print(log_file.read())#读取剩余的全部日志数据log_file.close()"接续读取"特性文件对象像一支"阅读指针":read(300)读完后,下一次read(500)从第301个字符继续往后读,不会重头再来。何时用read()?需要"按量截取"或"一口读完全文"时用它——如只看最新300字符的预警摘要,再决定是否细读全文。内容来源:教材2.5.2节(1)read()方法17SECTION2.5.2·READ文件读取②③:readline()逐行、readlines()批量2.5.2·读写(2)readline():逐行读取。从指定文件中读取一行数据,保留行末换行符\n,适用于逐行解析台风路径日志、单条观测数据等场景。语法readline(size=-1),size默认-1表示读取整行。#逐行读取气象站观测异常TXT日志(排查异常记录)error_log=open('weather_station_error.log',mode='r',encoding='utf-8')print("第一条异常记录:")print(error_log.readline())#读取第一条异常记录print("------------------")print("第二条异常记录:")print(error_log.readline())#继续读取第二条异常记录error_log.close()(3)readlines():批量读取。一次性读取文件中的所有数据,返回一个列表(一个元素对应一行数据),适用于批量处理站点观测数据、多时段预警记录。语法readlines(hint=-1),hint默认-1表示读取整个文件。#批量读取气象站小时级观测数据TXT日志hourly_data=open('weather_hourly_records.txt',mode='r',encoding='utf-8')all_records=hourly_data.readlines()#读取全部数据print("所有小时级观测数据(前5条):")forrecordinall_records[:5]:#打印前5条数据
print(record.strip())#去除换行符,格式化输出hourly_data.close()三种读取方式怎么选?read()按"量"读,readline()按"行"逐条读,readlines()一次全读成列表。列表结果可配合2.3节的切片([:5])与2.2节的for循环批量处理——文件读出的数据,最终都变成我们熟悉的字符串与列表。内容来源:教材2.5.2节(2)(3)18SECTION2.5.2·WRITE文件写入①:write()写入单条数据2.5.2·读写(4)write()方法:写入气象文件。用于向指定的气象文件中写入数据,它需要接收一个字符串类型的参数,适用于记录台风预警信息、追加单条观测数据等场景。其语法格式write(str):参数str表示要写入的字符串(如台风实时预警信息、站点异常记录);若写入成功,则返回本次写入文件的字符数。#向台风预警TXT日志追加实时预警信息txt_data=open('typhoon_warning_log.txt',encoding='utf-8',mode='a+')#写入"启浪"台风的实时预警记录write_count=txt_data.write("\n2025-08-0214:30|"启浪"台风|经度124.8°E,纬度22.5°N|风速45m/s|维持红色预警")print(f"成功写入{write_count}个字符的预警记录")txt_data.close()模式'a+'的含义a表示追加——新预警写在日志末尾,历史记录不丢失;+表示同时可读。若用'w'则会清空重写,预警日志场景务必慎用。返回值=字符数write_count接收写入成功的字符数,可用于校验"这条预警是否完整落盘"——防灾数据,一个字符都不能少。内容来源:教材2.5.2节(4)write()方法19SECTION2.5.2·WRITE文件写入②:writelines()批量写入2.5.2·读写(5)writelines()方法:批量写入气象文件。用于向气象文件中写入列表,列表中的每个元素都必须是字符串,适用于批量写入多条观测数据、多时段预警日志等场景。其语法格式writelines([str])。参数[str]表示要写入的字符串列表(如多条台风路径记录、多个站点的基础信息)。多个字符串之间不会自动换行,只有在字符串末尾手动添加换行符\n才会实现换行。#批量写入3个重点气象站的基础信息到TXT日志station_info=[
'ST-001|北京朝阳站|纬度39.93°N|经度116.47°E|观测类型:综合\n',
'ST-002|上海浦东站|纬度31.23°N|经度121.50°E|观测类型:海洋气象\n',
'ST-003|广州天河站|纬度23.13°N|经度113.36°E|观测类型:热带气象\n']txt_data=open('key_weather_stations.txt',encoding='utf-8',mode='a+')txt_data.writelines(station_info)print("成功批量写入重点气象站信息")txt_data.close()易错提醒:观察列表中每个字符串末尾的\n——少了它,3条站点信息会挤在同一行。writelines()只负责"逐元素写入",换行要靠自己。内容来源:教材2.5.2节(5)writelines()方法20SECTION2.5.2·CSVCSV专项读写(核心场景):写入观测数据2.5.2·读写(6)CSV表格气象数据专项读写(核心场景)。在气象领域中,CSV表格是存储结构化观测数据的核心格式(如站点编号、温度、湿度、气压等字段),结合Python内置的csv模块可实现高效读写。importcsv#场景1:写入全国10个气象站的日观测数据到CSV表格headers=["站点ID","站点名称","日期","平均温度(℃)","平均湿度(%)","平均气压(hPa)","最大风速(m/s)"]station_data=[["ST-001","北京朝阳站","2025-08-01",28.5,65,1012.3,6.8],["ST-002","上海浦东站","2025-08-01",30.2,72,1008.5,8.2],["ST-003","广州天河站","2025-08-01",32.1,78,1005.7,5.5],
#此处省略7个站点数据……]#写入CSV表格withopen('national_weather_daily.csv',mode='w',encoding='utf-8',newline='')asf:writer=csv.writer(f)writer.writerow(headers)#写入表头writer.writerows(station_data)#批量写入站点数据print("全国气象站日观测数据CSV表格写入完成")两个新面孔:withopen(...)asf让文件用完自动关闭,不必手写close();writerow写一行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 轧钢精整工安全技能测试水平考核试卷含答案
- 液压元件及液压系统制造工岗位复测考核试卷含答案
- 2026年秋新人教版九年级英语上册Unit1-Unit8句子背诵版
- 锐器伤的应急预案与处理流程试题及答案
- 卫生防疫技师考试模拟试题及答案
- 危险化学品生产单位安全生产管理人员考试题库及答案
- 天车维修电工试题及答案
- 十堰市中小学教师职称晋升水平能力测试题附答案
- 2026年社区党群服务中心主任笔试真题(附答案)
- 2026年海口乡镇(街道)公务员考前冲刺试题解析
- 阻火器设计计算书
- 颈肩部的基本按摩方法
- 茶叶拼配师班组评比知识考核试卷含答案
- GB/T 47436-2026智慧城市基础设施城市新区智慧交通
- 2026年度隐患排查治理安全生产排查治理情况报告
- 2026储能电池采购合同
- T-CI 1211-2025 地热资源地质专项勘察技术规程
- 酒店内部构成及管理制度
- 2026江苏南京助中资环新源城市更新(江苏)有限公司招聘安全管理部部门负责人1人考试参考题库及答案解析
- 2026年福建高考物理试题+解析
- 四川省引大济岷水资源开发有限公司公开遴选工作人员笔试备考题库及答案解析
评论
0/150
提交评论