面向中级 Python 开发人员的 13 个项目构想
学习 python 的基础知识是一种美妙的体验。但是,学习的喜悦可以被对实践项目的渴望所取代。想要建立项目是正常的,因此需要对项目的构想。
但问题是,有些项目对于中级的 Python 开发人员来说过于简单,或者过于困难。为此,工程师 Habeeb Shopeju 写了一篇文章,文中给出了适合中级 Python 开发人员 13 个项目构想,或许会对你有所帮助。
目录
构建项目的重要性
选择项目平台
-
网页
-
桌面图形用户界面
-
命令行
Web 项目想法
-
内容聚合器
-
Regex 查询工具
-
缩短网址
-
便利贴
-
测验申请
图形用户界面项目理念
-
MP3 播放器
-
报警工具
-
文件管理器
-
费用追踪器
命令行项目思想
-
联系人簿
-
站点连接检查器
-
批量文件重命名工具
-
目录树生成器
项目工作建议
结论
在本文中,你将了解到:
-
构建项目的重要性
-
你可以构建项目的主要平台
-
13 个你可以使用的项目构想
-
关于项目工作的一些小建议
构建项目的重要性
项目工作对于推动你作为 Python 开发人员的职业生涯来说至关重要,它让你有机会运用你所获得的技能和知识。
项目可以帮助你:
-
建立信心:无论项目的复杂程度如何,你都会更加相信自己创建软件的能力。
-
探索其他技术:你将了解构建完整产品所需的其他技术,如数据库、服务器和其他语言。
-
更好地理解编程概念:你将学习更好地编写代码,并了解设计模式和面向对象编程等概念。
-
体验一个完整的软件开发生命周期:在编写代码、管理编码过程和更新软件之前,你将学会如何计划。
作为一个 Python 开发人员,从构建项目中可以获得很多好处。
选择项目平台
你需要构建在平台上运行的软件,以便缺乏特定技术知识的人可以使用你的软件。Web、桌面和命令行是可以构建项目的三个主要平台。
Web
Web 应用程序是在 Web 上运行的应用程序,只要可以访问 Internet,就可以在任何设备上访问它们,而无需下载。如果你希望所有具有 Internet 访问权限的人都能访问你的项目,那么这个项目必须是一个 Web 应用程序。
Web 应用程序有后端和前端。后端是业务逻辑所在的部分:后端代码将操作和存储数据。前端是应用程序的接口:前端代码将决定 Web 应用程序的外观。
作为一个中级的 Python 开发人员,你的主要关注点是后端代码。但是,前端代码也很重要,因此你需要一些基本的 HTML、CSS 或 JavaScript 知识来创建一个简单的界面。
另一种选择是在前端和后端都使用 python。由于 Anvil 库消除了对 HTML、CSS 和 JavaScript 的需求,你可以只关注 Python 代码。
你可以使用 python 通过 Web 框架(如 django 和 flask)构建 Web 应用程序。使用 Python 构建 Web 应用程序的框架列表很长,你有很多选择,但 django 和 flask 仍然是非常流行的 Web 框架。
桌面图形用户界面
无论是台式机还是笔记本电脑,每次你在电脑上执行一项任务,这个任务都是通过一个应用程序完成的。作为一个中级的 Python 开发人员,你可以创建自己的桌面应用程序。
你不必学习任何前端技术来创建自己的图形用户界面(GUI)应用程序,而是使用 Python 构建所有部分。
有一些框架可以用于构建桌面应用程序,PySimpleGUI 就是其中之一,对于中级 Python 开发人员来说,它非常友好。
像 PyQt5 这样的高级图形用户界面框架非常强大,但是它的学习曲线非常陡峭。
你为桌面 GUI 创建的软件能够在任何 Windows、Linux 或 Mac 操作系统上工作。创建项目之后,你所要做的就是将其编译为可执行文件,供你选择的操作系统使用。
命令行
命令行应用程序是在控制台窗口中工作的应用程序,它是 Windows 上的命令提示,以及 Linux 和 Mac 上的终端。
你可以单击使用 Web 或 GUI 应用程序,但可以为命令行应用程序输入命令。命令行应用程序的用户需要有一些技术知识,因为他们需要使用命令。
命令行应用程序可能不如 Web 或 GUI 应用程序漂亮或易于使用,但这并不会使它们不如 Web 或 GUI 应用程序强大。
通过改变文本应用的颜色可以改善命令行应用程序的外观。有一些库可以用于着色,如 Colorma 和 Colored。
你可以使用诸如 docopt、argparse 和 click 等框架来构建应用程序。
Web 项目构想
在本节中,你将看到 Web 项目的构想。这些项目思想可以分为实用工具和理论工具。
以下是项目思路:
-
内容聚合器
-
Regex 查询工具
-
缩短网址
-
便利贴
-
测验申请
内容聚合器
内容是王道。从博客到社交媒体平台,它在网络上无处不在。为了了解最新的内容,你需要不断地在互联网上搜索新的信息。做到这一点的其中一种方法是手动检查所有站点,以查看新发布的内容。但这很费时,也很累。
这就是需要内容聚合器的地方:内容聚合器从不同的网站获取信息,并将所有这些信息聚合在一起。因此,你不必访问多个网站来获取最新信息:一个网站就足够了。
使用内容聚合器,可以从一个聚合所有内容的站点获取所有最新信息。人们可以看到他们感兴趣的帖子,并且可以了解更多关于它们的信息。
内容聚合器示例
下面是内容聚合器思想的一些应用:
-
AllTop
-
Hvper
技术细节
这个项目理念的主要目标是聚合内容。首先,你需要明确你希望内容聚合器从哪些网站获取内容。然后,你可以发送 HTTP 请求、使用 BeautifulSoup 等库来解析和从站点中获取必要的内容。
应用程序可以将其内容聚合实现为后台进程。像 celery 或者 apscheduler 这样的库可以帮助解决这个问题。你可以试用一下 apscheduler,它对于小后台进程来说非常棒。
从不同的站点抓取内容后,你需要将其保存到某个地方。所以,你需要使用一个数据库来保存抓取的内容。
额外的挑战
如果你想要更严峻的挑战,那么你可以添加更多网站。这将帮助你学到如何从网站上学习和提取信息。
你还可以让用户订阅你聚合的某些站点。然后,在一天结束时,内容聚合器会将当天的文章发送到用户的电子邮箱。
Regex 查询工具
我们每天都处理短信。举个例子,这篇文章也是文本,它有自己的结构。有时,你需要在文本中找到某些信息,在文本编辑器中使用常规搜索工具可能是无效的。
这就是 Regex 查询工具的作用所在。Regex 是一组字符串,它会检查查询的有效性。当 Regex 匹配文本中的模式时,它告诉用户并突出显示匹配的模式。因此,你的 Regex 查询工具将检查用户传入的 Regex 字符串的有效性。
使用 Regex 查询工具,用户可以在 Web 上快速检查其 Regex 字符串的有效性。相比使用文本编辑器检查字符串,这对用户来说更加容易。
Regex 查询工具示例
以下是 Regex 查询工具思想的一些实现:
-
FreeFormatter
-
RegexTester
技术细节
这种类型的项目的主要目标是告诉用户输入的查询字符串的有效性。你可以让它给出正响应或负响应,例如查询字符串有效,查询字符串无效,实现绿色的正响应和红色的负响应。
你不必从头开始实现查询工具,你可以使用 Python 的标准 re 库,它可以用来对输入的文本运行查询字符串。当查询字符串不匹配时,re 库将返回 none,当查询字符串匹配时,它将返回匹配的字符串。
有些用户可能无法完全理解 Regex,你可以制作一个页面来解释 Regex 的工作原理。你可以制作一些有趣的文档,让用户喜欢上学习和理解 Regex。
额外的挑战
制作一个只返回 Regex 有效性的项目是可以的,但你也可以添加替换功能。这意味着应用程序将检查 Regex 的有效性,并允许用户用其他内容替换匹配的字符串。因此,该工具不再是查找工具,而是替换工具。
缩短网址
URL 可能非常长,不便于用户使用。当人们共享链接,甚至试图记住一个 URL 时,这是很困难的,因为大多数 URL 都充满了困难的字符,而不是有意义的单词。
这就是 URL 需要缩短器的地方。URL 缩短器减少了 URL 中的字符或字母,使它们更容易阅读和记忆。像「xyz.com/wwryb78&svnhkn%sghq?sfiyh」这样的网址可以缩短为「xyz.com/piojwr」。
有了 URL 缩短器,URL 就成了一种有趣的工作。
URL 缩短器示例
以下是 URL 缩短器思想的一些实现:
-
Bitly
-
MeShort
技术细节
这个项目思想的主要目标是缩短 URL。应用程序将缩短 URL,然后在访问缩短的 URL 时将用户重定向到原始 URL。
在应用程序中,用户将输入原始的 URL,结果将得到新的、缩短的 URL。为此,你可以使用随机和字符串模块的组合来为缩短的 URL 生成字符。
由于用户将在几天、几个月甚至几年后访问缩短的 URL,因此需要将原始和缩短的 URL 保存在数据库中。当一个请求出现时,应用程序会检查该 URL 是否存在并重定向到原始的 URL,否则它会重定向到 404 页。
额外的挑战
生成一个带有随机字符的缩短的 URL 比长的随机 URL 更好。但是,你可以为用户提供更好的结果。你可以添加一个自定义 URL 的功能,这样用户就可以自定义生成 URL。
毫无疑问,自定义的 xyz.com/mysite URL 比随机生成的 xyz.com/piojwr URL 要好。
便利贴
人在一天之内会有很多想法,但也很容易忘记。解决遗忘问题的一个方法是在忘记之前把它们记下来。虽然一些被遗忘的想法可能是微不足道的,但有些想法可能相当强大。
这就是便利贴的用武之地:便利贴是一种背面带有低粘性粘合剂的小纸张,可以贴在文档、墙壁等表面。贴便条使记东西更容易。这和便利贴项目的想法类似。它是一个 Web 应用程序,因此可以允许用户记下事情并在任何地方访问。
有了便利贴,人们现在可以在任何地方记下东西,而不用担心忘记东西或把笔记放错地方,这是物理笔记的一种可能性。
便利贴示例
以下是便利贴思想的一些实现:
-
Pinup
-
Note.ly
技术细节
这个项目的主要目标是让用户可以记下想法。这意味着每个用户都有自己的注释,因此应用程序需要具有帐户创建功能,这样可以确保每个用户的笔记私有。
Django 配备了一个用户认证系统,因此它可能是一个不错的选择。你也可以使用其他框架,如 bottle 或 flask,但你必须自己实现用户身份验证系统。
由于用户可能需要在不同的模块下分离笔记,因此实现一个允许用户对笔记进行分类的功能将使应用程序更有用。
例如,你可能需要对算法和数据结构进行注释,因此你需要在这些类别中分离注释。
你需要存储每个用户的信息和注释,因此数据库成为这个项目的重要部分。如果要使用 MySQL 数据库,那你需要使用 MySQLdb 模块。如果要使用 PostgreSQL 数据库,那么可以使用 psycopg2 模块。你可以使用其他模块,但这一切都取决于你选择使用的数据库。
额外的挑战
遗忘是人类的共性,甚至在做了笔记时也是如此。你可以添加一个功能来提醒用户。此功能允许用户设置提醒时间,因此应用程序将在提醒时间时通过电子邮件向用户发送提醒。
测验申请
知识就是力量。世界上有很多东西需要学习,而测验有助于测试对这些概念的理解。作为一个中级别的 Python 开发人员,你不必理解语言的所有内容。参加考试是一种发现你知识漏洞的方法。
这里就需要小测验应用程序了。测验应用程序将向用户提出问题,并期望这些问题的正确答案。把测验申请看作是一种问卷调查。
使用测验应用程序,特殊用户将可以创建测试,普通用户可以回答问题并测试他们对测试主题的理解。
测验应用示例
以下是测验应用程序理念的一些实现:
-
myQuiz
-
Kahoot
技术细节
这个项目的主要目标是设置测验并让人们回答。因此,用户应该能够设置问题,其他用户应该能够回答这些问题。之后,应用程序将公布最终分数和正确答案。
如果你希望用户能够记录他们的分数,你可能需要实现帐户创建功能。
创建测试的用户应该能够通过简单地上传文本文件来创建包含问题和答案的测试。文本文件的格式可以由用户决定,因此应用程序可以从文件转换为测验。
你需要为这个项目实现一个数据库。数据库将存储每个用户的问题、可能的答案、正确的答案和分数。
额外的挑战
如果需要更多的挑战,你可以允许用户向测验添加计时器。这样,测试的创建者就可以确定用户应该在测试中的每个问题上花费多少时间。
有一个测验分享功能是很好的,这样用户就可以在其他平台上与朋友分享他们认为有趣的测验。
图形用户界面项目理念
在本节中,你将看到图形用户界面的项目构想。这些项目理念可以分为娱乐、金融和实用工具。
以下是项目构想:
-
MP3 播放器
-
报警工具
-
文件管理器
-
费用追踪器
MP3 播放器
如今,音频和文本一样重要。因为音频文件是数字文件,所以你需要一个可以播放它们的工具。如果没有播放器,你将无法收听音频文件的内容。
这就是 MP3 播放器的用武之地。MP3 播放器是播放 MP3 和其他数字音频文件的设备。这个 MP3 播放器图形用户界面项目的想法试图模拟物理 MP3 播放器。你可以构建可以在台式机或笔记本电脑上播放 MP3 文件的软件。
完成 MP3 播放器项目的构建后,用户可以播放 MP3 文件和其他数字音频文件,而无需购买物理 MP3 播放器。他们可以用电脑播放 MP3 文件。
MP3 播放器示例
以下是 MP3 播放器想法的一些实现:
-
MusicBee
-
Foobar2000
技术细节
该项目的主要目标是允许用户播放 MP3 和数字音频文件。为了吸引用户,应用程序必须有一个简单但漂亮的用户界面。
可以有一个界面来列出可用的 MP3 文件,你还可以让用户选择列出不是 MP3 的其他数字音频文件。
用户还希望 MP3 播放器有一个显示正在播放的文件信息的界面,包括文件名、文件长度、播放量和未播放量(以分钟和秒为单位)。
Python 有一些可以播放音频文件的库,例如 pygame,它让你可以用几行代码来处理多媒体文件。你还可以查看 pymedia 和 simpleaudio。
这些库可以处理许多数字音频文件。它们可以处理其他类型的文件,而不仅仅是 MP3。
你还可以实现允许用户创建播放列表的功能。要做到这一点,你需要一个数据库来存储创建的播放列表上的信息。Python 的 sqlite3 模块允许你使用 SQLite 数据库。
在这种情况下,SQLite 数据库是一个更好的选择,因为它是基于文件的,并且比其他 SQL 数据库更容易设置。虽然 SQLite 是基于文件的,但是保存数据比保存常规文件要好。
额外的挑战
如果你想接受更大的挑战,你可以添加一个功能,允许 MP3 播放器重复当前播放的文件,甚至可以随机播文件列表中的文件。
还可以实现允许用户提高和降低音频文件播放速度的功能。用户会发现这很有趣,因为他们能够以比平时更慢或更快的速度播放文件。
报警工具
有一句谚语是,「时间和潮流不等人」,但我们的生活中发生这么多事情,很难不忘记时间。为了能够跟踪时间,我们需要一个提醒。
这就是报警工具的作用。警报是一种在特定条件下发出声音或视觉信号的装置。这个警报工具项目的想法是试图建立一个软件来发出警报。当满足一定条件时,报警工具发出音频信号。在这种情况下,一定的条件指的就是设定时间。
通过警报工具,用户可以设置警报,在一天中的某些时间提醒他们一些事情。警报工具项目将可以在用户的笔记本电脑或桌面设备上工作,他们不必购买物理计时器。
报警工具示例
以下是警报工具构想的一些实现:
-
FreeAlarmClock
-
TimerForMac
技术细节
这个项目的主要目标是在一天中的某些时间激活音频信号。因此,定时和要播放的音频信号是报警工具中最重要的部分。
报警工具应允许用户创建、编辑和删除报警。它还应该有一个界面,列出所有用户没有删除的警报。因此,它应该列出活动和非活动警报。
由于它是一个警报,应用程序必须在设置的时间播放音调。有播放音频的库,比如 pygame 库。
在代码逻辑中,应用程序必须不断检查设置的报警时间。到达时间后,它会触发一个函数来播放警报音。
由于应用程序将检查设置的报警时间,这意味着应用程序必须将报警保存在数据库中。数据库应该存储报警日期、时间和音调位置等信息。
额外的挑战
如果还需要额外的功能,你可以允许用户设置重复报警。他们将能够在一周中的某些天、每个星期的某个时间响起的警报。例如,可以在每周一下午 2:00 设置警报。
你还可以添加暂停功能,这样你的用户就可以暂停警报,而不仅仅是解除警报。
文件管理器
一个普通的 PC 用户在个人电脑上都有很多很多的文件。如果所有这些文件都放在一个目录中,则很难查找文件或目录。因此,有必要对文件进行适当的安排和管理。
这就是文件管理器出现的地方。文件管理器允许用户通过用户界面管理文件和目录。虽然文件可以通过命令行进行管理,但并非所有用户都知道如何做到这一点。
使用文件管理器,用户可以正确地安排、访问和管理其文件和目录,而不需要知道如何使用命令行。文件管理器允许用户执行的某些任务包括复制、移动和重命名文件或目录。
文件管理器工具示例
-
FreeCommander
-
Explorer++
技术细节
文件管理器项目的主要目标是为用户提供一个界面来管理他们的文件。用户需要一个文件管理器,它界面美观且易用。
你可以使用 PySimpleGUI 库创建独特的用户界面,这个库可以让你省去很多复杂的操作。
你的用户应该能够执行简单的任务,如创建新目录或空文本文件。他们还应该能够复制和移动文件或目录。
sys、os 和 shutil 库对于这个项目非常有用,因为它们可以用于在用户单击时在后台对文件执行操作。
网格视图和列表视图是当今流行的视图,你可以在应用程序中实现这两种视图。之后用户可以选择适合他们的视图选项。
额外的挑战
要使文件管理器更高级一点,可以实现搜索功能。这个功能让用户可以搜索文件和目录,而不必手动查找它们。
还可以实现排序功能。这将允许用户根据不同的顺序对文件进行排序,如时间、字母顺序或大小。
费用追踪器
我们有日常费用,从杂货到衣服再到账单。有这么多的开支,我们通常会忘记它们,继续花钱,直到我们快没钱了。追踪器可以帮助人们观察他们的支出。
这就是费用追踪器出现的地方。费用追踪器是一种软件工具,允许用户跟踪他们的花费。它还可以分析费用,这取决于它的先进程度,但现在让我们先做最简单的。
通过费用跟踪,用户可以设置预算并跟踪他们的支出,从而做出更好的财务决策。
费用追踪器示例
以下是费用跟踪概念的一些实现:
-
Buddi
-
GnuCash
技术细节
本项目的主要目标是跟踪用户的开支。必须进行一些统计分析,以便向用户提供有关其支出的正确信息,并帮助他们更好地支出。
虽然跟踪费用是关键,但良好的界面也很重要。使用 pysimplegui 可以创建一个独特的界面来改善用户的体验。
pandas 和 Matplotlib 等 Pydata 库可以帮助构建支出跟踪程序。
pandas 可用于数据分析,Matplotlib 库可用于绘制图形。图形将为用户提供开支的可视化表示,可视化表示通常更容易理解。
应用程序将接收来自用户的数据。这里的数据是输入的费用。因此,你必须将支出存储在数据库中。对于这个项目来说,SQLite 数据库是一个很好的选择,因为它可以进行快速设置。你可以将 sqlite3 模块用于 SQLite 数据库。
额外的挑战
为了让你的用户从这个项目中受益,他们必须定期输入他们的开支,但是他们可能会忘记这样做。因此,实现提醒功能很有用。应用程序可以在一天或一周的某些时间发送通知,提醒用户使用费用跟踪程序。
命令行项目构想
在本节中,你将看到命令行的项目理念。所讨论的项目思想可以归类为实用工具。
以下是项目构想:
-
联系人簿
-
文件连接检查器
-
批量文件重命名工具
-
目录树生成器
联系人簿
我们每天都遇到很多人,结识很多新朋友。我们让他们留下联系方式以便以后保持联系。遗憾的是,保管好收到的联系信息可能很困难。一种方法是写下联系人的详细信息。但这并不安全,因为实体笔记很容易丢失。
这就是通讯录项目的切入点。联系人簿是用于保存联系人详细信息(如姓名、地址、电话号码和电子邮件地址)的工具。通过这个联系人簿项目,你可以构建一个软件工具,人们可以使用它来保存和查找联系人详细信息。
有了联系人簿项目,用户可以保存他们的联系人,同时减少丢失保存的联系人详细信息的风险。这个联系人薄总是可以通过命令行从计算机访问。
通讯录工具示例
虽然市面上有很多通讯录应用程序,但很少找到命令行通讯录产品,大多数是 Web、移动或 GUI 应用程序。
以下是通讯录构想的一些实现:
-
Simple Contacts
-
Pobuca Connect
技术细节
本项目的主要目标是保存联系人详细信息。设置用户可用于输入联系人详细信息的命令很重要。你可以使用 argparse 或单击命令行框架。它们抽象了很多复杂的东西,所以你只需要关注在执行命令时要运行的逻辑。
你应该实现的一些功能包括删除联系人、更新联系人信息和列出保存的联系人的命令。你还可以允许用户使用不同的参数(如字母顺序或联系人创建日期)进行排序来列出联系人。
因为它是一个命令行项目,所以用 SQLite 数据库保存联系人是一个很好的选择。SQLite 易于用户设置。你可以将联系人详细信息保存在一个文件中,但这样就没有使用 SQLite 所能获得的好处多,例如性能和安全性。
要在这个项目中使用 SQLite 数据库,Python sqlite3 模块将非常有用。
额外的挑战
还记得数据库是如何存储在用户计算机上的吗?如果发生了什么事情,比如用户丢失了他们的文件怎么办?这意味着他们也会失去联系方式。
你可以进一步挑战自己,并将数据库备份到在线存储平台。要做到这一点,你可以每隔一定的时间将数据库文件上传到云端。
你还可以添加一个允许用户自己备份数据库的命令。这样,如果数据库文件丢失,用户仍然可以访问联系人。
应该注意,你可能需要某种形式的标识,这样联系人簿就可以知道哪个数据库文件属于哪个用户。实现用户身份验证功能是实现它的一种方法。
站点连接检查器
当你访问一个 URL 时,你期望能看到请求的页面。但情况并非总是如此。有时候,网站可能会关闭,所以你不会得到想要的结果。相反,你将收到错误消息。你可以不断地尝试一个关闭的网站,直到你得到你需要的信息。
这是站点连接检查器项目的切入点。站点连接检查器访问一个 URL 并返回该 URL 的状态:它是活动的还是非活动的。站点连接检查器将每隔一段时间访问 URL,并返回每次访问的结果。
站点连接检查器不必手动访问 URL,而是可以为你完成所有这些手动工作。这样,你只会得到检查结果,而不必花时间在浏览器上,等待站点上线。
站点连接检查程序示例
以下是站点连接检查器思想的一些实现:
-
Ping
-
Site24x7
技术细节
本项目的主要目标是检查站点的状态。因此,你需要编写代码来检查网站的状态。
你可以选择对连接使用 TCP 或 ICMP。socket 模块是要检查的模块。你还可以阅读 Python 中的 socket 编程指南。
通过选择的框架(无论是 docopt、click 还是 argparse 框架),你可以添加命令以允许用户从要检查的站点列表中添加和删除站点。
用户还应该能够启动工具,停止它,并确定时间间隔。
由于必须保存要检查的文件列表,因此可以将其保存到文件中(仅保存站点列表),也可以通过 sqlite3 模块使用 SQLite 数据库。
额外的挑战
应用程序可以检查站点的连接状态,并将结果显示到命令行。但这将要求用户继续检查命令行。
你可以增加挑战并实现通知功能。通知功能可以是在后台播放的声音,用于在网站状态更改时提醒用户。你需要一个数据库来存储站点的以前状态,这是工具在状态改变时唯一能辨别的方法。
批量文件重命名工具
有时,你需要根据某些约定命名目录中的所有文件。例如,你可以将目录中的所有文件命名为 file0001.jpg,其数字根据目录中的文件数增加。手动操作可能会带来压力和重复性。
批量文件重命名工具允许用户重命名大量文件,而无需手动重命名文件。
这样可以节省用户很多时间。它省去了他们做无聊的重复工作和犯错误的麻烦。使用批量文件重命名工具,用户可以在几秒钟内重命名文件,而不会出现任何错误。
批量文件重命名工具示例
以下是批量文件重命名思想的一些实现:
-
Ren
-
Rename
技术细节
这个项目的主要目标是重命名文件。因此,应用程序需要找到一种方法来操作目标文件。the os、sys 和 shutil 库在本项目的大部分地方都会用到。
用户可以使用命名约定重命名目录中的所有文件。因此,他们应该能够传递选择的命名约定。如果您了解 Regex 的工作原理,Regex 模块将帮助匹配所需的命名模式。
用户可能希望将诸如 myfiles 之类的命名约定作为命令的一部分传递,并希望该工具重命名所有文件,如 myfiles XYZ,其中 XYZ 是一个数字。他们还应该能够选择要重命名文件的目录。
额外的挑战
这个项目的主要挑战是重命名目录中的所有文件。但是用户可能只需要命名一定数量的文件。要测试你的技能,你可以实现一个功能允许用户选择要重命名的文件数,而不是所有文件。
请注意,仅重命名一定数量的文件需要工具根据字母顺序、文件创建时间或文件大小对文件进行排序,具体取决于用户的要求。
目录树生成器
目录就像系列树:每个目录都与其他目录有特定的关系。除了一个空的根目录之外,任何目录都不能单独存在。
当你处理文件和目录时,很难看到目录之间的关系,因为你只能看到当前目录中存在的内容。你要么使用文件管理器,要么使用命令行。
使用目录树生成器,你可以像树或映射一样查看文件和目录之间的关系。
这样更容易理解文件和目录的位置。当你解释某些概念时,目录树映射很重要,目录树生成器使你更容易获得文件和目录关系的可视化表示。
目录树生成器示例
以下是目录树生成器思想的一些实现:
-
Tree
-
Dirtreex
技术细节
目录树生成器的主要目标是可视化文件和目录之间的关系。OS 库在列出所选目录中的文件和目录时非常有用。
使用 docopt 或 argparse 这样的框架有助于抽象很多东西,使你能够专注于为应用程序的逻辑编写代码。
在应用程序的逻辑中,你可以决定如何表示文件或目录。使用不同的颜色是一种很好的方法。可以使用 colored 库以不同颜色打印文件和目录。
你还可以决定目录树生成器的深度。例如,如果一个目录有十二层的子目录,那么你可能决定只进行到第五层。
如果你愿意,还可以让用户决定目录树生成器的深度。
额外的挑战
因为生成的目录树的结果将在命令行上,所以你可以更进一步。你可以让生成器创建目录树的图像,因此它基本上将文本转换为图像。
你会发现 pillow 库很有用。
项目工作建议
从事项目可能很困难,但是,项目的动机和兴趣会使它不那么令人生畏。
如果你对一个项目感兴趣,你将能够投入时间去研究,并找到能帮助你完成这个项目的库和工具。
以下是一些建议:
-
找到激励的源泉
-
将项目分解为子任务
-
研究子任务
-
构建每个子任务,一次一步
-
如果你被困住了,请寻求帮助
-
将子任务放在一起
结论
在本文中,你已经看到了一些你可能会感兴趣的 Python 项目构想。
项目理念涵盖了一系列平台,你看到了 Web、GUI 和命令行平台的项目思想。
你可以选择在不同的平台上构建项目。以 URL 缩短器为例,你可以选择在 Web、GUI 或命令行上构建它。
由于你是一个中级的 Python 开发人员,这些项目可能非常具有挑战性,但也很有趣。
使一个项目成功的最好方法就是开始行动。当你完成项目,你会发现自己从中受益匪浅!