资讯动态

零基础学Python:环境搭建、核心语法与自动整理文件夹实战

发布时间:2026/10/15 7:03:06 来源:尧图企业网站定制
1. Python到底是什么值得你花时间学吗先聊个实际的话题。这两年常有人问我我想转行做数据处理/自动化办公/后端开发该学什么语言我的答案一直很简单先学Python。如果你把这趟python 学习之旅理解为单纯学一套语法那就亏了。Python真正值钱的地方在于它把从想法到实现的距离压到了极短。别人花一晚上调的接口你用Python半小时就能跑通别人用Excel手工处理三天的报表你写几十行脚本几分钟搞完。这种低门槛、高产出的特性让Python成了数据科学、自动化脚本、后端服务、爬虫开发、甚至AI模型训练的事实标准语言。这门课的定位非常明确为零基础或半路转行的学习者准备的第一篇入门教程。你不需要有任何编程背景只要能打字、会装软件就能跟着走下去。我会尽量不堆概念用一个个能跑起来的例子把你从啥也不懂带到能独立写点小工具的程度。这一篇我们会搞定三件事把Python装进你的电脑并让命令行认它看懂并写出第一个Python程序掌握变量、条件判断、循环、函数这四个核心积木最终拼出一个小工具。学完这一篇你应该能独立写出一个按文件类型自动整理文件夹的小脚本这个脚本放到真实工作中立刻就能用。你不会在这里看到未来已来、万物互联之类的废话。我只讲那些我踩过坑、验证过、你照着做就能成的实操内容。2. 出发前的三个关键选择版本、编辑器、运行环境安装Python看起来是件小事实际翻车率最高的恰恰在这里。我见过太多人卡在最开始的环境配置上还没写第一行代码就被劝退了。所以我先把这三件事讲透。2.1 Python版本别纠结无脑选最新稳定版打开Python官网下载页会看到Python 3.x的版本列表。很多老教程让你装2.x或者3.6之类千万别跟。现在已经是3.12、3.13的时代新版本不仅有更好的语法支持性能也更强而且主流第三方库全都默认兼容新版本。我个人建议直接下载官方最新的稳定版。在Windows平台安装时有一处极其关键的选项勾选Add Python to PATH这个选项默认不勾选。如果没有勾选安装完成后在命令行敲python会提示不是内部或外部命令。原因很简单系统没有把Python的可执行程序路径注册到环境变量里。勾上之后你就能在任意目录下直接用python命令启动解释器。如果是macOS用户通常系统会自带一个Python 3但版本可能偏旧。我建议用Homebrew安装一份新的安装完留意终端输出提示的export PATH那几行照抄执行即可。Linux用户别碰系统自带的Python直接用系统包管理器装python3和python3-pip就够用。只要装好之后运行python3 --version能输出一个3.x的版本号就说明环境OK。2.2 编辑器选择不是越复杂越好编辑器这块新手最容易走两个极端要么用Windows记事本写代码全程搬石头砸脚要么一上来就装一堆插件被界面吓跑。我的建议是按你的目标选如果你打算写脚本、做自动化、搞数据分析用VS Code。它启动快、插件生态全、对Python的支持非常好。安装完官方Python插件后就能获得代码高亮、自动补全、单步调试这些核心功能。如果你打算做正经的Web项目或大型工程可以考虑PyCharm。社区版免费功能更重但对工程管理、虚拟环境、远程部署的支持更强。如果你只是跑Python自带的学习DemoWindows自带的IDLE也行但体验比较原始不太推荐。这里有个实操提示VS Code下载安装后在扩展栏里搜Python装那个下载量最高的微软官方扩展。第一次打开.py文件时它会提示你选择解释器选你刚装的Python版本即可。如果你不清楚这个步骤最直观的验证方法按Ctrl \打开终端输入python --version能输出版本号就说明VS Code已经正确接上了Python。2.3 虚拟环境现在就养成好习惯新手阶段可以不用管虚拟环境但我会建议你在跑过第一个程序后顺手把它学了。因为以后你装第三方库时一定会碰到这种情况项目A需要某库1.0版项目B需要2.0版装来装去互相覆盖最终结果就是哪个项目都跑不起来。虚拟环境的作用相当于给每个项目一个独立的小房间互不干扰。创建方法很简单python -m venv myenv在Windows下激活myenv\Scripts\activate在macOS/Linux下激活source myenv/bin/activate激活后你在该环境里用pip安装的所有库都会装进这个小房间不影响全局环境。我强烈建议从第二节课开始每个项目都建一个新虚拟环境。这个习惯一旦养成能给你省下大把修环境的功夫。3. 第一个Python程序连Hello都别小看环境准备好之后老规矩先写Hello World。不过我想借这个例子多讲几层你想不到的东西。3.1 两种运行方式交互式与脚本式先打开命令行输入python敲回车你会看到光标变成这就是Python的交互模式。在这里输入的每一行代码都会被立即执行。试着敲print(hello, world)回车屏幕上立刻打出hello, world。这种模式适合测试零碎语法学入门阶段可以多在这玩。但真实的项目不可能一行一行敲我们需要把代码写进文件。新建一个文件命名为hello.py注意扩展名必须是.py。用VS Code打开敲入同样的代码print(hello, world)然后在终端执行python hello.py你会看到同样的输出。这就是脚本式运行。脚本式运行的逻辑通俗点讲就像煮一碗方便面代码是调料包python解释器是锅而命令行敲的命令是开火的动作。3.2 print函数的隐藏细节print()是Python里最基础的函数它的作用是把内容输出到控制台。但有个细节你得知道print默认在打印完内容之后会换行。如果你不想换行可以加一个end参数print(hello, end) print(world)这两行代码会输出helloworld因为在第一行我们把它结尾的换行符换成了空字符串。再比如打印多个值name 小明 age 18 print(我叫, name, 今年, age, 岁)这个用法在拼接字符串时会频繁用到。如果嫌麻烦还有一种更现代的方式——f-stringprint(f我叫{name}今年{age}岁)花括号里直接写变量名运行时会被自动替换成对应的值。f-string是Python 3.6之后引入的现在已经成为主流字符串格式化方式后面写任何脚本我都推荐你用这个。3.3 缩进Python最反人类的设定在Python里代码块的层级不是靠大括号而是靠缩进。判断、循环、函数定义这些结构下一层级的代码必须缩进通常是四个空格。很多初学者在这里栽跟头。比如你写了if True: print(hi)Python会直接报IndentationError: expected an indented block。意思是我期待一个缩进的代码块。这个设计的初衷是为了强制代码可读性但副作用是它让你无法随意乱写。我的建议是在VS Code里把Tab键设为自动转成四个空格。方法设置里搜detect indentation和insert spaces全都打开。这样你按Tab时编辑器会自动补成空格永远不会混用Tab和空格。缩进问题几乎是新手期最大的报错来源。我见过一个同学代码逻辑全对就是因为某一行多了个空格导致运行结果诡异。这类问题排查方式后面会专门讲现在你只要记住一条铁律同一个代码块的所有行缩进必须完全一致。4. 变量与数据类型Python比你想的更宽容但坑也更隐蔽学完第一个程序我们可以正式进入语言的词汇表部分了。变量和数据类型看着基础但里面有几个概念如果你一开始就理解透彻了后面学列表、字典、类都会轻松很多。4.1 变量就是贴标签不是存箱子很多教材把变量比喻成存储数据的盒子。这个比喻在Python里其实不够准确。Python的变量更像一个标签它能被贴到任何数据上。比如x 10 x hello x [1, 2, 3]这段代码完全合法。x先是整型再是字符串最后变成列表——Python不会像C或Java那样强制一个变量只能装一种类型。这种特性叫动态类型。好处是写代码更自由、更快坏处是当你的程序变大时你可能会忘记某个变量现在到底存了什么类型的数据导致运行时报错。我的建议是动态类型自由用但代码里要养成命名即注释的习惯例如用user_age而不是a用total_price而不是tp。这样即便类型在变读代码的人也能猜到意图。4.2 五种基础数据类型先认识前四个Python自带的基础类型很多但入门阶段你必须掌握这四个整型(int)整数比如100、-3。浮点型(float)小数比如3.14、2.0。字符串(str)文本必须用引号包裹单引号双引号都行。abc、你好都是字符串。布尔型(bool)只有两个值True和False。注意必须是大写开头。还有一个空值(None)表示这个变量现在什么都没有。来看个小综合例子user_age 18 user_height 1.75 user_name 小明 is_student True这里我用了四个变量分别存四种类型。你可以用type()函数随时检查类型print(type(user_age)) # 输出 class int4.3 类型转换最容易被忽略的坑当字符串和数字用拼接时Python会直接报错。比如age 18 print(年龄是 age)恭喜你你会得到一条TypeError: can only concatenate str (not int) to str。报错的意思是字符串只能和字符串拼接不能和数字拼接。解决办法是用str()把数字变成字符串print(年龄是 str(age))反过来当你从input()函数得到用户输入时返回的永远是字符串哪怕用户输入的是数字age input(请输入你的年龄) print(age 1) # 报错因为age是字符串这个时候需要用int()做转换age int(input(请输入你的年龄)) print(age 1)类似的转换函数还有float()、bool()。我把这个坑放在这么前面讲是因为它就藏在最常见的应用场景里。以后你写任何需要用户输入的程序十有八九会遇到忘记转换的问题。记住这个原则和外部世界打交道的数据键盘输入、文件读取、网络请求几乎都是字符串用之前先想清楚要不要转。4.4 字符串的拼接、重复和切片字符串可玩的花样很多入门阶段掌握三个操作就够拼接用full_name 张 三重复用*line - * 30 print(line) # 会打印30个横线切片用方括号加索引text hello python print(text[0:5]) # 输出 hello print(text[-6:]) # 输出 python索引从0开始计数-1代表最后一个字符。这里有个规律你记一下切片[start:end]拿到的是从start到end-1的内容end本身不包含在内。我当初学这的时候经常搞混写出text[0:5]以为会取5个字符其实取到index 4后来多跑几次就刻进肌肉记忆了。5. 条件判断与循环让程序学会思考和重复变量只是存储数据真正让程序变得聪明的是它能根据条件做不同的事以及能重复执行某些操作。这两种能力分别对应条件判断和循环。5.1 条件判断的三种写法Python的条件判断由if、elif、else三个关键字组成。基础语法长这样score 85 if score 90: print(优秀) elif score 60: print(及格) else: print(不及格)三个重要规则条件后面的冒号不能丢条件为真的代码块必须缩进elif和else必须和if在同一缩进层级。有个小技巧判断时不要写冗余条件。比如上面代码中elif score 60不需要再写and score 90因为能走到这个分支说明前面的score 90已经为假了。这个逻辑你需要仔细体会写多了自然就顺了。5.2 比较运算符与逻辑运算符判断的核心是表达式表达式由比较运算符和逻辑运算符组成。比较运算符有相等、!不等、、、、。注意判断相等是两个等号一个等号是赋值。这个也是高频翻车点我见过有人写if name 小明:然后崩溃半天找不到原因。逻辑运算符有三个and且、or或、not非。嵌套使用时建议加括号明确优先级if (age 18 and has_id_card) or is_vip: print(可以进入)不加括号的话and的优先级高于or虽然结果往往一致但可读性差很多。我的习惯是只要混合使用了and和or必加括号。这是让代码可读的最简单方式。5.3 for循环最常用的遍历方式循环解决的核心问题是重复。Python里最常见的循环是for它专门用于遍历序列。序列可以是字符串、列表、元组、字典等。比如遍历一个列表fruits [苹果, 香蕉, 橙子] for fruit in fruits: print(f我喜欢吃{fruit})每次循环fruit变量会被依次赋值为列表中的一个元素。循环体执行结束后程序会自动取下一个元素直到遍历完。如果你需要同时拿到元素和它的序号用enumerate()fruits [苹果, 香蕉, 橙子] for index, fruit in enumerate(fruits): print(f第{index}个是{fruit})输出结果第0个是苹果 第1个是香蕉 第2个是橙子enumerate()返回的序号默认从0开始。如果你想从1开始可以加个参数enumerate(fruits, start1)。5.4 while循环与range函数for适合我知道要循环几次的场景while适合我不知道次数但知道结束条件的场景。count 0 while count 5: print(count) count 1count 1等价于count count 1每循环一次计数器加1直到不满足条件退出。如果你需要生成一串连续的数字用range()函数for i in range(1, 6): print(i)输出1到5。range(1,6)生成的是[1,2,3,4,5]结束值不包含。还有一个实战常用技巧循环里用break提前结束整个循环用continue跳过本次循环剩余代码、进入下一次循环。for i in range(1, 10): if i 3: continue # 跳过3 if i 7: break # 到7就停止 print(i)输出结果是1、2、4、5、6。关于break和continue我的经验是能少用就少用。如果循环逻辑复杂到必须依赖好几个break说明这段代码该被拆成函数了。5.5 新手必见的死循环while循环有个致命问题如果结束条件永远无法满足程序就会无限循环。比如while True: print(停不下来了)这个程序会一直输出直到你按CtrlC强制终止。所以在写while循环时你要确保循环体里有一条语句能让条件在某个时刻变假或者你能确定地使用break。这是每个Python开发者都必须经历的挂起-终止-反思环节。6. 函数把代码变成可复用的积木到这里你写的代码还只是一条路走到黑的脚本。函数将是你的第一个架构级概念。一旦掌握它你就能写出结构清晰、别人能读懂的代码。6.1 为什么需要函数假设你在程序里需要三次计算矩形的面积。没有函数时你得抄三次area1 width1 * height1 area2 width2 * height2 area3 width3 * height3这样不仅费手指而且一旦公式变了比如要加上损耗系数你得分三处修改漏改一处就出bug。而用函数你只需要定义一次调用三次def calc_area(width, height): return width * height area1 calc_area(5, 3) area2 calc_area(7, 2) area3 calc_area(4, 6)以后再改公式只改函数内部所有调用自动生效。6.2 函数的定义、参数与返回值定义一个函数的基本格式def 函数名(参数1, 参数2, ...): 这里是函数的功能描述 # 函数体 return 返回值def是定义函数的关键字函数名后紧跟圆括号里面放参数。参数不一定要有但括号必须有。函数体的代码必须缩进。return用于返回结果。一个函数只要执行到return就会立即结束不管后面还有没有代码。这点需要注意如果你在return后写了代码那些代码永远不会执行。如果没有return语句函数会在执行完所有代码后返回None。None是Python里的什么都没有打印它会输出None。下面是个完整的例子def get_bmi(weight_kg, height_m): 计算BMI指数 bmi weight_kg / (height_m ** 2) return round(bmi, 1) result get_bmi(65, 1.75) print(fBMI {result})这里height_m ** 2表示身高的平方round(bmi, 1)对结果保留一位小数。运行会输出BMI 21.2。6.3 参数的默认值与常见误区函数定义时可以给参数指定默认值。这样调用时如果不传该参数就使用默认值def greet(name, greeting你好): return f{greeting}{name} print(greet(小明)) print(greet(小红, 早上好))第一个调用输出你好小明第二个输出早上好小红。关于默认值有个著名的坑不要用可变对象比如列表作为默认值。看这个例子def add_item(item, items[]): items.append(item) return items第一次调用add_item(a)返回[a]第二次调用add_item(b)返回[a, b]而不是预期的[b]。原因是默认列表在函数定义时只创建一次所有调用共享它。正确做法是默认值设为None在函数内部再创建def add_item(item, itemsNone): if items is None: items [] items.append(item) return items这个坑虽然入门阶段不一定遇到但如果你后面要写更复杂的代码早晚会踩到。顺手记住不算亏。6.4 函数就是把复杂问题切成小块我见过很多新手学了函数语法但不知道什么时候该用。这里给你一个简单的判断标准如果你觉得一段代码的功能可以用一句自然语言描述那就值得把它写成函数。比如计算总价、读取配置文件、解析用户输入。函数名就是这段功能的摘要。随着代码量增长你会越来越体会到程序设计的艺术其实就是拆分。把大问题拆成小函数每个小函数只干一件事然后用主逻辑把它们拼起来。这就是入门到进阶的分水岭。7. 实战拼装写一个文件夹清理小工具我把这一篇最后的部分设计成一个能用的小工具。目标是自动清理当前目录下杂乱的桌面文件把它们按扩展名归类到对应子文件夹。比如所有.jpg、.png图片放进图片文件夹所有.pdf、.docx放进文档文件夹所有.zip、.rar放进压缩包文件夹。7.1 用到的库和完整代码这个工具需要用到三个模块os操作系统交互、shutil文件操作工具、pathlib路径处理。前两个是标准库直接可以用。先给出最终代码再逐行讲解import os import shutil from pathlib import Path # 定义分类规则扩展名 - 文件夹名 RULES { .jpg: 图片, .jpeg: 图片, .png: 图片, .gif: 图片, .pdf: 文档, .docx: 文档, .txt: 文档, .xlsx: 文档, .zip: 压缩包, .rar: 压缩包, .7z: 压缩包, } def organize_folder(target_dir): 把target_dir下的文件按扩展名分类归入子文件夹 target Path(target_dir) if not target.exists(): print(f目录不存在: {target_dir}) return for file_path in target.iterdir(): if file_path.is_dir(): continue # 跳过文件夹 ext file_path.suffix.lower() category RULES.get(ext, 其他) dest_dir target / category dest_dir.mkdir(exist_okTrue) dest_path dest_dir / file_path.name if dest_path.exists(): print(f跳过文件已存在: {file_path.name}) continue shutil.move(str(file_path), str(dest_path)) print(f已移动: {file_path.name} - {category}/) if __name__ __main__: # 请修改为你想要整理的目录例如 rC:\Users\用户名\Desktop target_dir rC:\tmp\test_files organize_folder(target_dir)7.2 逐行拆解这段代码里藏着哪些知识点先看导入部分from pathlib import PathPath是Python 3.4引入的面向对象路径库比传统的os.path拼接字符串更优雅。Path(rC:\tmp\test_files)会创建一个路径对象对这个对象进行/操作能拼接子路径。再看RULES字典。字典是Python里另一种重要容器以键值对存储数据。这里我们把扩展名映射到分类文件夹名路线一目了然。以后要加新的文件类型只需要在字典里加一行。organize_folder内部有几个核心操作target Path(target_dir)把传入的字符串路径转成Path对象。target.iterdir()遍历目录下的所有条目文件和子目录。这里有个小坑iterdir()返回的路径是完整路径不只是名字所以你后面需要用file_path.name单独取文件名。if file_path.is_dir(): continue判断当前条目是否为目录如果是就直接跳过。如果不加这段工具会把子文件夹也当作文件移动造成严重的目录结构错乱。这个判断我强烈建议不要省。ext file_path.suffix.lower()suffix属性返回文件扩展名比如.JPG。为了兼容大写和小写扩展名统一转成小写。category RULES.get(ext, 其他)字典的get方法有两个参数第一个是要查找的键第二个是找不到时返回的默认值。这样遇到未定义的扩展名比如.tmp就统一归到其他文件夹程序不会报错。dest_dir.mkdir(exist_okTrue)如果目标文件夹不存在就创建。exist_okTrue的意思是如果已经存在不报错直接继续。这是处理重复创建目录最常见的优雅写法。if dest_path.exists(): print(f跳过文件已存在: {file_path.name}) continue这是个防冲突逻辑。万一目标文件夹里已经有一个同名文件直接用shutil.move会报错或覆盖。属于生产环境里必须考虑的边界情况。shutil.move(str(file_path), str(dest_path))shutil.move接受字符串路径也可以接受Path对象把文件从原位置移动到目标位置。这里我把Path对象转成字符串再传是为了兼容性——某些旧版本对Path对象的支持不完全。运行效果已移动: a.jpg - 图片/ 已移动: b.PDF - 文档/ 已移动: c.zip - 压缩包/ 已移动: d.tmp - 其他/整个工具涵盖了本篇的多数核心知识点字典、循环、条件判断、函数、路径处理以及查找-判断-执行的编程流程。7.3 小工具的扩展思路如果你觉得这个工具还不够实用动动手就能让它更强大增加对文件的按日期归类用os.path.getmtime(file_path)获取最后修改时间按年月建子目录。增加正则表达式只处理匹配特定模式的文件夹避免误伤。增加命令行参数用sys.argv接收用户传入的目标目录而不是硬写在代码里。增加日志记录把操作记录写到一个日志文件方便回头审计。我不会把这些功能全部实现因为那会冲淡这一篇的练习重点。你按需扩展就是最好的复习。8. 常见报错与Debug技巧这些错误我替你踩过了写代码不可能不报错关键是报错后能不能快速定位。新手最常见的反应是看到一大串英文就直接懵了然后求助别人。其实Python的错误提示已经足够精确你只需要学会读最后一行。下面是我在带人入门时遇到频率最高的几类错误以及对应的排查思路。8.1 SyntaxError语法错误代码格式不对这类错误意味着代码的语法不符合Python规则解释器根本没法理解。常见原因少写了冒号、括号没闭合、用了中文字符的引号、混用了Tab和空格。比如if score 60 print(及格)报错SyntaxError: expected :看到expected :就清楚了——第三行的if语句缺了冒号。这类错误的排查方法先看报错信息里提示的文件名和行号再检查上一行。Python往往在真正出错的下一行才报错因为解释器直到读完换行符才发现不对劲。一个很隐蔽的坑是中英文引号混用。在中文输入法下写字符串可能打出hello这种全角引号Python不认。排查时可以开启VS Code的显示不可见字符功能引号和缩进符号会一目了然。8.2 NameError名字未定义print(message)如果之前没定义过message报错NameError: name message is not defined原因通常是变量名拼写不一致或者变量在作用域外被引用。解决办法很简单检查变量有没有被正确赋值赋值语句有没有被执行到。有一种坑比较隐蔽你在函数外部定义了一个变量又在函数内部对它赋值结果报错说referenced before assignment。这是因为Python把函数内部出现的赋值语句视为定义了局部变量与外部的同名变量无关。解决办法如果不小心踩到这个先检查变量名是否有重复或者用global关键字声明不推荐最好直接换个变量名避免混淆。8.3 IndentationError缩进出错这类错误是Python新手专属的高频bug。常见情况有三种该缩进的地方没缩进不该缩进的地方多缩进了同一代码块里混用空格和Tab。报错信息大致是IndentationError: unexpected indent我的排查步骤打开VS Code的显示空格设置把报错行前后的缩进字符全部可视化确认同一块代码的缩进层级是否完全一致。养成只用空格、不用Tab的习惯后这类错误会降到接近零。8.4 TypeError类型操作错误这类错误在刚学类型转换时会频繁出现。报错往往长这样TypeError: can only concatenate str (not int) to str就是前面讲的字符串拼接数字问题。排查方法先用print(type(变量名))输出变量的实际类型看看它和你想的是否一致。通常加上一行打印真相就出来了。Debug这件事我特别想传达一个观念不要害怕报错报错信息是最好的Debug老师。你只要耐着性子读一读最后一行搜索一下错误类型百分之八十的问题都能解决。剩下百分之二十往往是环境或配置问题这时候再找人求助也不迟。9. 接下来怎么继续推进你的Python之路到这里你已经把Python最核心的语言骨架打完了变量、类型、条件、循环、函数外加一个实战小工具。这些内容看起来不多但它们是你后续所有Python技能的基石。9.1 下一步学习路线的优先级建议根据我自己的经验和带人的观察下一个阶段的优先顺序是数据结构列表、元组、字典、集合的进阶用法。特别是列表推导式、字典推导式能让你的代码缩短三分之一。异常处理用try...except优雅地处理错误让你的程序不会因为一个小问题就整体崩溃。文件读写读文件、写文件、处理JSON和CSV数据。这是进入数据处理的必由之路。模块与包理解import的机制学习安装和使用第三方库。面向对象类和对象的概念。当你开始写大型项目时这个知识会让你对代码组织有全新的认识。不要急着学爬虫、自动化、数据分析等方向。那些是应用层而这五点是地基层地基不稳直接上楼迟早要回头补课。9.2 学习方法的几个建议我见过很多人学Python第一天热情高涨第三天就蔫了。原因是他们一直在看视频、抄代码但没真正想做点什么。学编程的黄金法则是带着问题学为完成目标而写代码。你可以试着找一些生活里的痛点每天手动整理下载文件夹太麻烦写个脚本每个月要做一样的Excel报表写个脚本想批量修改文件名写个脚本。只要你在做自己真正需要的东西遇到问题就会主动查资料、问AI、翻文档这样的学习效率远高于按部就班地看教程。另外遇到不懂的API或语法养成查官方文档的习惯。Python官方文档做得相当友好每个模块都有示例。搜索引擎上搜到的高赞博客可以看但最终以官方文档为准。9.3 这一篇留下的两个作业如果你真的想把这篇文章的内容内化成自己的能力我建议你完成以下两个练习练习一巩固基础 写一个程序让用户输入一个整数n然后计算并输出从1加到n的和以及1到n之间所有偶数的和。要求把计算部分封装成函数。练习二实战应用 改造第7节的文件整理工具增加以下功能移动完成后统计每个分类下的文件数量并输出一张简单的汇总表。如果目标文件夹不存在提示用户而不是直接退出。做完这两个练习再进入下一篇章的学习你的基础会比大多数人扎实得多。这一篇就到这里我正在着手准备第二篇深入列表与字典以及文件读写。到时候我们会用另一个真实项目把这些骨架填上血肉。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑