| # -*- coding: utf-8 -*- |
| |
| import os |
| |
| print(os.name) # 获取操作系统类型 |
| # print(os.uname()) # 获取操作系统的详细信息,Win不支持 |
| print(os.environ) # 获取操作系统环境变量,结果是一个dict |
| print(os.environ.get('PATH')) # 获取固定的环境变量值PATH |
| print(os.path.abspath('.')) # 查看当前目录的绝对路径 |
| print(__file__) # 获取当前执行文件名称 |
| print(os.path.abspath(__file__)) # 获取当前文件路径(带有文件名) |
| print(os.path.dirname(os.path.abspath(__file__))) # 获取文件的路径 |
| |
| # 先把完整路径表达出来,拼接成字符串,相当于路径对象 |
| dir1 = os.path.join('D:\\Data\\Test', '123') |
| |
| # 创建目录 |
| os.mkdir(dir1) # 创建目录 |
| # os.makedirs(dir1) # 创建目录 |
| os.removedirs(dir1) # 删除目录 |
| |
| # 获取当前目录中的所有目录 |
| print([x for x in os.listdir('.') if os.path.isdir(x)]) |
| |
| # 获取当前目录中所有的文件 |
| print([x for x in os.listdir('.') if os.path.isfile(x)]) |
| |
| # 获取当前目录中的txt文件 |
| print([x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] == '.txt']) |
| |
| # shutil模块提供了copyfile()的函数,你还可以在shutil模块中找到很多实用函数,它们可以看做是os模块的补充 |
| |
| |
| # 指定文件对象 |
| text1 = 'D:\\Data\\Test\\a.txt' |
| |
| print(os.path.split(text1)) # 拆分路径获取('D:\\Data\\Test', 'a.txt') |
| print(os.path.splitext(text1)) # 拆分路径获取文件扩展名('D:\\Data\\Test', 'a.txt') |
| |
| # 创建a.txt文件 |
| # 标示符 'r' 表示读 |
| # 如果文件不存在,open()函数就会抛出一个IOError的错误。 |
| # 注意文件字符集类型。 |
| f = open(text1, 'r', encoding='utf8') |
| |
| # 遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。遇到这种情况,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略: |
| f1 = open(text1, 'r', encoding='gbk', errors='ignore') |
| |
| # 调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示 |
| print(f.read()) |
| # 如果文件太大,内存就会爆掉,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。 |
| print(f.read(10)) |
| # 调用 readline()可以每次读取一行内容,调用 readlines()一次读取所有内容并按行返回list。 |
| for line in f.readlines(): |
| print(line) |
| |
| # 调用close()方法关闭文件,文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源。 |
| f.close() |
| |
| # 每次都需要关闭文件句柄,这样写有些繁琐,一般我们用 with 语句来操作。 |
| with open('D:\\Data\\Test\\a.txt', 'r', encoding='utf8') as f: |
| print(f.read()) |
| |
| # file-like Object (文件类型对象) |
| # 像 open()函数返回的这种有个read()方法的对象,在Python中统称为file-like Object。 |
| # 除了file外,还可以是内存的字节流,网络流,自定义流等等。file-like Object不要求从特定类继承,只要写个read()方法就行。 |
| # StringIO就是在内存中创建的file-like Object,常用作临时缓冲。 |
| |
| # 二进制文件 |
| # 要读取二进制文件,比如图片、视频等等,用'rb'模式打开文件即可: |
| f2 = open('D:\\Data\\Test\\0.jpg', 'rb') |
| |
| # 写文件 |
| # 写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件: |
| f3 = open('D:\\Data\\Test\\a.txt', 'w') |
| f3.write('Hello, world!') |
| f3.close() |
| |
| # 你可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。 |
| # 当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。 |
| # 只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。 |
| # 忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。 |
| # 所以,还是用with语句来得保险。 |
| # 要写入特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码。 |
| # 留意数据覆盖问题!! |
| with open('D:\\Data\\Test\\a.txt', 'w') as f: |
| f.write('Hello, world!') |
读取文件判断结尾
| while True: |
| url = f.readline() |
| if not url: |
| break |
| else: |
| pass |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?