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自动化又近了一步。接下来我会尝试用这些知识写一个自动整理下载文件夹的脚本,让电脑保持整洁。

相关推荐
小北方城市网3 小时前
Redis 分布式锁高可用实现:从原理到生产级落地
java·前端·javascript·spring boot·redis·分布式·wpf
六义义4 小时前
java基础十二
java·数据结构·算法
喵手4 小时前
Python爬虫零基础入门【第九章:实战项目教学·第15节】搜索页采集:关键词队列 + 结果去重 + 反爬友好策略!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·搜索页采集·关键词队列
Suchadar4 小时前
if判断语句——Python
开发语言·python
ʚB҉L҉A҉C҉K҉.҉基҉德҉^҉大4 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
喵手5 小时前
Python爬虫零基础入门【第九章:实战项目教学·第14节】表格型页面采集:多列、多行、跨页(通用表格解析)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·表格型页面采集·通用表格解析
毕设源码-钟学长5 小时前
【开题答辩全过程】以 基于SpringBoot的智能书城推荐系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
0思必得05 小时前
[Web自动化] 爬虫之API请求
前端·爬虫·python·selenium·自动化
笨手笨脚の5 小时前
深入理解 Java 虚拟机-03 垃圾收集
java·jvm·垃圾回收·标记清除·标记复制·标记整理
莫问前路漫漫5 小时前
WinMerge v2.16.41 中文绿色版深度解析:文件对比与合并的全能工具
java·开发语言·python·jdk·ai编程