更新时间:2019年07月26日 11时12分00秒 来源:黑马程序员论坛
在本文中,为大家整理了10个常用的相关命令,涉及查看信息、更改信息、删除文件等,并提供了相应的终端命令,帮助大家更高效地对文件系统及其中的文件内容进行操作。 通过一个能够实现与文件系统进行交互的Python程序,我们可以实现很多有趣的应用,但是大部分人并不知道如何实现这种交互。本文为相关研发人员和数据科学家提供了一个实现指南,并重点介绍10个基本的os和shutil命令,以便通过脚本实现Python程序与文件系统的自动交互。 ![]() 文件系统和一栋房子的结构相似。在每次进行大扫除的时候,我们都需要将很多箱的文件从一个屋子移动到另一个屋子,这和使用Python移动文件的操作很像。 ![]() 文件目录则像装满了东西的箱子,只不过在文件系统中,装的都是系统中存储的文件。 ![]() 装在箱子中的笔记本,就像电脑中存储的文件,我们可以对其进行读/写,也可以把它们存放在目录中。 这个指南介绍了os和shutil模块中的相关方法。其中,os模块主要用于与操作系统交互,shutil模块则包含一些针对文件的操作。一般情况下,我们使用os创建目录,使用shutil移动和复制文件。 Python标准库更新:2019年2月16日新增pathlib库 在 Python 3.4 版本,标准库中增加了 pathlib 模块,以改进文件路径的处理;在3.6版本中,增加了更多pathlib与标准库的其他模块的交互,效果很好。pathlib将路径视为对象而非字符串,这使得其在解析文件路径上具有一定优势。如果你想要对pathlib有更多了解,可以阅读 Real Python 和 pbpython 提供的介绍。虽然pathlib 很方便,但它不具备我们将要探索的一些底层功能。因此,使用 os 和shutil 方法还是有必要的。 在进行更详细的介绍之前,有以下几点需要注意:
下面, 本文将逐一介绍文件系统的 10 种命令方法,每个部分都会按照“方法:描述→对应的 macOS Shell 命令”模式进行介绍,便于大家理解。 一、获取信息(Get Info)
二、更改信息(Change Things)
以上是对十个最常用、基础的文件系统方法的初步介绍,接下来我们再深入讲解一些重要的模块和使用方法。 查看信息 os.getcwd()以字符串形式返回当前工作目录 os.listdir() 以字符串列表形式返回当前目录 os.walk("my_start_directory")创建一个生成器,用于返回关于当前目录和子目录的信息。在起始指定的目录中有效。 os.walk() 遍历包含的每个目录后,都会返回下列项: (1)当前目录路径(字符串类型) (2)当前目录下的子目录名称(字符串列表类型) (3)当前目录中的文件名称(字符串列表类型的) 使用带有for循环的os.walk()来遍历目录及其子目录的内容通常很有用。例如,下面的代码将打印当前工作目录的目录和子目录中的所有文件。 以上是获取信息的操作。下面让我们一起看一下更改工作目录或移动、复制、删除文件系统的命令。 ![]() 更改信息 ![]() 此方法将当前工作路径更改为绝对路径或相对路径。 如果随后要对文件系统进行其他更改,在试用该方法时留意处理任何异常。否则,您可能正在删除不希望删除的目录或文件。 ![]() os.path.join()提供将多个字符串完美连接在一起的文件路径,而且是在大多数操作系统上都可以工作的路径。该模块文档的描述为,该命令可以“更加智能的连接一个或多个路径组件,返回值是路径或路径的任何成员路径的连接,每个非空路径后都有一个目录分隔符(os.sep),最后一个除外”。 另外,如果使用的是Unix或macOS系统,os.path.join()会在每个字符串之间添加一个斜杠(" / ")来创建路径。如果操作系统需要“\”,那么join会自动使用反斜杠。 os.path.join()还向其他开发人员提供了创建路径的明确信息。强烈建议读者多使用这个命令,不要每次都手动添加斜杠。 ![]() ![]() 在Python中复制文件和目录的方法有很多,但建议使用此命令。shutil.copy2()的优势在于,它尽可能地保留了源文件的元数据。如果你希望对文件和努力的复制有更多了解,可以阅读这篇文章。 ![]() 移动文件 ![]() 使用shutil.move()更改文件的位置。它使用 copy2 作为后台参数默认值。 ![]() 当需要删除文件时,可以使用os.remove()工具。 ![]() shutil.rmtree()删除一个目录及其中的所有文件和目录。 ![]() 删除文件 使用删除函数的时候一定要多加小心!您可以使用print()将要删除的内容打印出来,在确定不会删除错误文件后,再用相应的删除文件函数替换print()。在此向Al Sweigart致敬,感谢他在文章《Automate the Boring Stuff with Python》中进行的讨论。 最后我们再回顾一下整个方法。 10种文件系统方法概述 下面方法遵循这个模式:方法——描述——等效macOS Shell命令 获取信息
改动信息
以上介绍了关于Python与文件系统交互的一些基础知识。希望大家在Ipython编辑器中多尝试这些命令,并向其他人解释这些方法,以更好的掌握和巩固知识。 如果你想对相关内容有更多了解,可以看看免费的电子书,或者多用Python编编代码。关于使用Python从文件中读写的相关操作,请查看open函数的官方文档。 或者联系学姐:DKA-2018 |
微信截图_20190605143250.png (2 KB, 下载次数: 0)
推荐了解热门学科
java培训 | Python人工智能 | Web前端培训 | PHP培训 |
区块链培训 | 影视制作培训 | C++培训 | 产品经理培训 |
UI设计培训 | 新媒体培训 | 产品经理培训 | Linux运维 |
大数据培训 | 智能机器人软件开发 |
传智播客是一家致力于培养高素质软件开发人才的科技公司,“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。
传智播客从未停止思考
传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”
中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。
何为中高级程序员课程?
传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展。“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。
黑马程序员热门视频教程【点击播放】
Python入门教程完整版(懂中文就能学会) | 零起点打开Java世界的大门 |
C++| 匠心之作 从0到1入门学编程 | PHP|零基础入门开发者编程核心技术 |
Web前端入门教程_Web前端html+css+JavaScript | 软件测试入门到精通 |