最近我在学习Python的文件和系统操作,这部分知识非常实用,无论是做自动化脚本还是数据处理,都离不开它。我想把学习心得和重点记录下来,分享给大家。
一、os库:文件路径的"瑞士军刀"
Python的os库是处理文件和目录的核心工具。我把它的常用功能总结为这几类:
- 获取当前路径
• os.getcwd():获取当前工作目录的绝对路径。
python
import os
print(os.getcwd())

- 创建文件夹
• os.mkdir(path):创建单层目录,父目录不存在会报错。
• os.makedirs(path):递归创建多层目录,父目录不存在时会自动创建。
python
import os
os.mkdir(r'数据1')
#
import os
os.makedirs(r'数据104\内容b\内容a\内容c')
import os
for i in range(1,201):
file_name = '文件夹'+str(i)
file_path = os.getcwd()+'\\数据1\\'+file_name
os.mkdir(file_path)

- 拼接与拆分路径
• os.path.join(path1, path2):安全拼接路径,自动适配系统分隔符。
• os.path.split(path):拆分路径为目录和文件名/文件夹名。
• os.path.basename(path):获取文件名或文件夹名。
python
import os
dir_new = os.path.join(os.getcwd(),'数据2','内容c')
print(dir_new)

- 跳转与修改路径
• os.chdir(new_path):切换当前工作目录。
python
import os
print(os.getcwd())
os.chdir('.\\数据2')
print(os.getcwd())

- 判断路径类型
• os.path.isabs(path):判断是否为绝对路径。
• os.path.exists(path):判断路径是否存在。
• os.path.isfile(path):判断是否为文件。
• os.path.isdir(path):判断是否为目录。
python
import os
a = os.path.isabs('数据2\文件夹201')
b = os.path.isabs('D:\pycharm\python\python1')
print(a,b)

6.获取文件路径和文件名
python
import os
path = r'D:\pycharm\python\python1\数据2\文件夹201\a.txt'
file_name = os.path.basename(path)
dir_name = os.path.dirname(path)
file_dir_name = os.path.split(path)
print(file_name,'\n',dir_name,'\n',file_dir_name)

二、文件与文件夹的增删改查
这部分是日常操作中最常用的,熟练掌握可以大大提升效率。
- 查询文件大小
• os.path.getsize(file_path):获取文件大小,单位为字节。
python
import os
path = r'D:\pycharm\python\python1\数据3\书代码.zip'
print(os.path.getsize(path))

- 删除文件与文件夹
• os.remove(file_path):删除单个文件。
• os.rmdir(dir_path):删除空文件夹。
• 注:删除非空文件夹需要用 shutil.rmtree()(需导入shutil库)。
python
import os
os.remove(r'D:\pycharm\python\python1\数据3\书代码1.zip')
import os
os.remove(r'D:\pycharm\python\python1\数据1\helloworld.txt')
import os
os.rmdir(r'D:\pycharm\python\python1\数据104\内容b\内容a\内容c')
运行前

运行后

- 重命名文件与文件夹
• os.rename(old_path, new_path):修改文件或文件夹的名称。
python
import os
for i in range(0,1):
old = 'D:\pycharm\python\python1\数据1\数据2'
new = 'D:\pycharm\python\python1\数据1\数据'+str(i+200)
os.rename(old,new)
os.rename('D:\pycharm\python\python1\数据1\数据200','D:\pycharm\python\python1\数据1\数据'+str(i+200))
运行前数据1文件夹中为文件夹1~200

运行后数据1文件夹中为文件夹201~400

- 复制文件
• os.link(src, dst):创建硬链接实现文件复制。
• 注:跨盘符复制需要用 shutil.copy()。
python
import os
os.link('D:\pycharm\python\python1\hello.txt',r'D:\pycharm\python\python1\数据104\hello.txt')
运行前数据104文件夹中没有hello.txt文件

运行后数据104文件夹中出现hello.txt文件

- 获取文件夹内所有内容
• os.listdir(folder_path):返回目录下所有文件和子目录的列表。
• 示例:files = os.listdir(".") → 获取当前目录下所有内容
三、执行外部程序与命令
Python不仅能操作文件,还能调用外部程序和系统命令,这让它的能力边界得到了极大扩展。
- os.system()
• 直接执行系统命令或启动外部程序。
python
import os
os.system('calc')
os.system('D:\APP\微信\Weixin\Weixin.exe')
import os
a = os.system(r'D:\pycharm\python\python1\程序3.py')
print(a)
import os
os.system('D:\pycharm\python\pandas\导出.xlsx')


- os.popen()
• 执行命令并获取输出结果,支持读取返回内容。
python
import os
a = os.popen(r"D:\pycharm\python\python1\程序3.py","r")
print("jieshu: ",a.read())

四、*sys库
1.获取python信息
• 获取python解释器信息
sys库中的version用于获取当前Python的解释器版本号,version_info用于获取解释器的版本信息。
python
import sys
print(sys.version)#获取当前Python的解释器版本号
print(sys.version_info)#获取解释器的版本信息

python
import sys
if (sys.version_info[0]*10+sys.version_info[1])/10 < 3.8:
print('您的Python版本过低,请安装Python3.8及以上版本')
sys.exit()
else:
print("您的Python版本正确,代码将继续运行")
print('hello world')

• 获取python其他信息
sys库中还提供了获取Python的其他信息的方法,具体如下:
maxsize属性:获取当前Python支持的对象中包含的最大数据长度。
platform属性:获取当前计算机的操作系统。
copyright属性:获取当前Python的版权信息。
executable属性:获取当前Python解释器在计算机中的目录地址。
exec_prefix属性:获取当前Python的安装目录地址。
python
import sys
print(sys.maxsize)#获取Python支持的对象中包含的最大数据长度。
print(sys.platform)#获取当前计算机的操作系统。
print(sys.copyright)#获取当前Python的版权信息
print(sys.executable)#获取当前Python解释器在计算机中的目录地址
print(sys.exec_prefix)

- sys库的系统级操作
• sys.argv:获取命令行参数,实现脚本的灵活传参。
python
import os
for i in range(1,len(sys.argv)):
if sys.argv[i] == '-h':
print('''本代码的帮助
-h:用于查询代码
-a:用于获取python的所有关键字
-c:用于获取python安装的所有第三方库的列表''')
if sys.argv[i] == '-a':
print('开始查询python所有关键字: ')
help('keywords')
if sys.argv[i] == '-c':
print('开始查询Python安装的所有第三方库: ')
os.system('pip list')

• sys.stdin/sys.stdout/sys.stderr:标准输入、输出、错误流,可用于重定向。
• sys.exit():退出程序,可指定退出码。
python
import sys
sys.stdout.write('hello')
a = sys.stdin.readline()
print(a)
sys.stderr.write('错误,请修改!')
sys.exit('错误,请修改!')

五、学习感悟
这一章的知识点非常密集,我最大的体会是:
-
多用多练:这些API看起来简单,但实际使用时很容易出错,特别是路径拼接和跨平台兼容性问题。
-
善用帮助:遇到不确定的函数时,print(os.path.isdir.doc) 可以直接查看文档说明。
-
安全第一:删除和修改文件前一定要确认路径正确,避免误操作。
掌握了这些技能,我感觉自己离真正的Python自动化又近了一步。接下来我会尝试用这些知识写一个自动整理下载文件夹的脚本,让电脑保持整洁。