本文摘抄自 文件操作与OS基础操作全解析、常见OS基础操作、Python常见OS基本操作 和日常经验总结。
在 Python 实际工作运用中,对文件的操作都占据了很重要的一部分。本文将深入探讨 Python 中的文件操作以及 os 模块的各种功能,包括文件的打开、读取、写入、关闭,目录的创建、删除、遍历等,同时还会涉及到一些相关的高级主题,如文件指针操作、文件权限管理等。通过对这些内容的学习,读者将能够熟练地在 Python 程序中处理文件和目录相关的任务,为进一步的编程开发打下坚实的基础。
一、文件操作基础
说到文件操作基础,必须提到io库。它属于Python的内置库(无需额外导入),提供了各种用于输入输出操作的类和函数。除了open
函数外,io库还提供了如:read()
, write()
, readline()
, close()
等函数和类,用于读写文件和关闭文件等操作,下面会逐个介绍。
(一)打开文件:open函数用于打开文件,并返回一个文件对象
file = open(file_path, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
- file_path:要打开的文件的路径,可以是相对路径或绝对路径。
- mode:文件打开模式,常见的模式有:
- 'r':只读模式,用于读取文件内容。如果文件不存在,则会抛出 FileNotFoundError 异常。
- 'w':只写模式,用于写入文件内容。如果文件不存在,则会创建新文件;如果文件已存在,则会清空原有内容。
- 'a':追加模式,用于在文件末尾添加内容。如果文件不存在,则会创建新文件。
- 'x':独占创建模式,用于创建新文件,如果文件已存在,则会抛出 FileExistsError 异常。
- 'b':二进制模式,与其他模式结合使用,如 'rb' 表示以二进制只读模式打开文件,常用于处理非文本文件,如图片、音频等。
- 't':文本模式,默认模式。如果要明确指定文本模式,可以使用 'rt' 等。
例如,以只读模式打开一个文本文件:
file = open('example.txt', 'r')
(二)读取文件内容
1、读取全部内容:使用 read()
方法可以一次性读取文件的全部内容。例如:
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
这里读取了 `example.txt` 文件的全部内容并打印出来,最后关闭了文件。需要注意的是,对于大文件,一次性读取全部内容可能会占用大量内存,不太合适。
2. 按行读取:使用 `readline()` 方法可以逐行读取文件内容。例如:
file = open('example.txt', 'r')line = file.readline()while line:print(line)line = file.readline()file.close()
这种方式每次读取一行,直到文件末尾。
3. 读取所有行并返回列表:使用 readlines()
方法可以读取文件的所有行,并将每行作为一个元素存储在列表中。例如:
file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:print(line)
file.close()
二、OS基础操作:
首先安装os:
pip install os
os常用属性和方法
os.name 返回操作系统类型
os.environ 以字典形式返回系统变量
os.putenv(key, value) 改变或添加环境变量
os.listdir(path=’ : ) 列表形式列出目录下所有目录和文件名
os.getcwd() 获取当前路径
os.chdir(path) 改变当前工作目录到指定目录
os.mkdir(path [, mode = 0777 ] ) =0777])=0777]) 创建目录
os.makedirs(path [ mode=0777]) 递归创建目录
os.rmdir(path) 移除空目录,不能删除有文件的目录
os.remove(path) 移除文件
os.rename(old, new) 重命名文件或目录
os.stat(path) 获取文件或目录属性
os.chown(path, uid, gid) 改变文件或目录所有者
os.chmod(path, mode) 改变文件访问权限
os.symlink(src, dst) 创建软链接
os.unlink(path) 移除软继接
os.getuid() 返回当前进程UID
os.getlogin() 返回登录用户名
os.getpid() 返回当前进程ID
os.kill(pid, sig) 发送一个信号给进程
os.walk(path) 目录树生成器,生成一个三组 (dirpath, dirnames, filenames)
os.system(command) 执行shell命令,不能存储结果
os.popen(command [, mode=‘r’ [, bufsize]]) 打开管道来自shell命令,并返回一个文件对象
os.path相关方法:
os.path.basename(path) 返回最后一个文件或目录名
os.path.dirname(path) 返回最后一个文件所属目录
os.path.abspath(path) 返回一个绝对路径
os.path.exists(path) 判断路径是否存在,返回布尔值
os.path.isdir(path) 判断是否是目录
os.path.isfile(path) 判断是否是文件
os.path.islink(path) 判断是否是链接
os.path.ismount(path) 判断是否挂载
os.path.getatime(filename) 返回文件访问时间截
os.path.getctime(filename) 返回文件变化时间戰
os.path.getmtime(filename) 返回文件修改时间戰
os.path.getsize(filename) 返回文件大小,单位字节
os.path.join(a, *p) 加入两个或两个以上路径,以正斜杜"/"分隔。常用于拼接路径
os.path.split( 分隔路径名
os.path.splitext( 分隔扩展名
案例1:改变当前工作目录:
import os# 获取当前工作目录
print("当前工作目录:", os.getcwd())# 改变工作目录
os.chdir('/path/to/new/directory')
print("新的工作目录:", os.getcwd())
案例2:文件删除
# 创建或打开文件
with open('example.txt', 'w') as file:file.write('Hello, world!')# 读取文件
with open('example.txt', 'r') as file:content = file.read()print(content)# 删除文件
os.remove('example.txt')
案例3:查看指定目录下的文件和子目录
# 列出当前目录下的所有文件和目录
print("当前目录下的文件和目录:")
for entry in os.listdir('.'):print(entry)# 判断是否为文件或目录
entries = os.listdir('.')
for entry in entries:full_path = os.path.join('.', entry)if os.path.isfile(full_path):print(f"{entry} 是文件")elif os.path.isdir(full_path):print(f"{entry} 是目录")
案例4:对文件路径进行分割和组合
# 获取文件的绝对路径
print("文件的绝对路径:", os.path.abspath('example.txt'))# 组合路径
print("组合后的路径:", os.path.join('/path/to', 'example.txt'))# 分割路径
print("分割路径:", os.path.split('/path/to/example.txt'))# 获取文件扩展名
print("文件扩展名:", os.path.splitext('example.txt')[1])
案例5:获取系统环境变量
# 获取环境变量
print("环境变量 PATH:", os.environ.get('PATH'))
案例6:运行系统命令
# 运行系统命令
os.system('echo Hello from the system command line!')
案例7:更改文件权限(需要管理员权限)
import stat# 更改文件权限
os.chmod('example.txt', stat.S_IRUSR | stat.S_IWUSR) # 设置文件只读和可写权限给用户
案例8:获取当前脚本的绝对路径
import os# 获取当前脚本的绝对路径
script_path = os.path.abspath(__file__)
print("当前脚本的绝对路径:", script_path)
主要操作就这些了,其他内容大家慢慢摸索吧!