Python自动化利器:文件与系统操作从入门到精通

最近我在学习Python的文件和系统操作,这部分知识非常实用,无论是做自动化脚本还是数据处理,都离不开它。我想把学习心得和重点记录下来,分享给大家。

一、os库:文件路径的"瑞士军刀"

Python的os库是处理文件和目录的核心工具。我把它的常用功能总结为这几类:

  1. 获取当前路径

• os.getcwd():获取当前工作目录的绝对路径。

python 复制代码
import os
print(os.getcwd())
  1. 创建文件夹

• 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)
  1. 拼接与拆分路径

• 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)
  1. 跳转与修改路径

• os.chdir(new_path):切换当前工作目录。

python 复制代码
import os
print(os.getcwd())
os.chdir('.\\数据2')
print(os.getcwd())
  1. 判断路径类型

• 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)

二、文件与文件夹的增删改查

这部分是日常操作中最常用的,熟练掌握可以大大提升效率。

  1. 查询文件大小

• os.path.getsize(file_path):获取文件大小,单位为字节。

python 复制代码
import os
path = r'D:\pycharm\python\python1\数据3\书代码.zip'
print(os.path.getsize(path))
  1. 删除文件与文件夹

• 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')

运行前

运行后

  1. 重命名文件与文件夹

• 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

  1. 复制文件

• 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文件

  1. 获取文件夹内所有内容

• os.listdir(folder_path):返回目录下所有文件和子目录的列表。

• 示例:files = os.listdir(".") → 获取当前目录下所有内容

三、执行外部程序与命令

Python不仅能操作文件,还能调用外部程序和系统命令,这让它的能力边界得到了极大扩展。

  1. 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')
  1. 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)
  1. 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('错误,请修改!')

五、学习感悟

这一章的知识点非常密集,我最大的体会是:

  1. 多用多练:这些API看起来简单,但实际使用时很容易出错,特别是路径拼接和跨平台兼容性问题。

  2. 善用帮助:遇到不确定的函数时,print(os.path.isdir.doc) 可以直接查看文档说明。

  3. 安全第一:删除和修改文件前一定要确认路径正确,避免误操作。

掌握了这些技能,我感觉自己离真正的Python自动化又近了一步。接下来我会尝试用这些知识写一个自动整理下载文件夹的脚本,让电脑保持整洁。

相关推荐
草履虫建模1 天前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
qq_297574671 天前
【实战教程】SpringBoot 实现多文件批量下载并打包为 ZIP 压缩包
java·spring boot·后端
老毛肚1 天前
MyBatis插件原理及Spring集成
java·spring·mybatis
学嵌入式的小杨同学1 天前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
lang201509281 天前
JSR-340 :高性能Web开发新标准
java·前端·servlet
Re.不晚1 天前
Java入门17——异常
java·开发语言
缘空如是1 天前
基础工具包之JSON 工厂类
java·json·json切换
追逐梦想的张小年1 天前
JUC编程04
java·idea
好家伙VCC1 天前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
南极星10051 天前
蓝桥杯JAVA--启蒙之路(十)class版本 模块
java·开发语言