【python学习】python的OS模块

中国史之【夏制《禹刑》】:
禹刑是中国夏代刑法的总称。因夏朝的开国君主为禹,故名。相传禹继尧舜之位建立了中国历史上第一个奴隶制王朝,并创制了肉刑。夏朝法律规定了五种刑罚,共三千条。禹刑的具体内容已散佚。
-来源:全历史APP

今天讲python的OS模块,属于文件系统功能。有需要的也可以直接去我的github查看全部笔记:

https://github.com/JackKoLing/python_notes_with_ten_days
在这里插入图片描述
俗话说:“好记性不如烂笔头”,多写写多记记,总不会错。多一些不为什么的坚持,少一些功利主义的追求。对于环境的配置,可以参考以下两篇:

1 目录相关函数

  • chdir():改变工作目录
  • chroot():设定当前进程的根目录
  • listdir():列出指定目录下的所有文件名
  • mkdir():创建指定目录
  • makedirs():创建多级目录
  • getcwd():获取当前路径
  • rmdir():删除文件目录
  • removedirs():删除多级文件目录
import os # 将linux或c语言的一些目录操作封装成文件管理系统
os.mkdir('../day6/dir') # 创建文件夹
os.getcwd() # 获取当前路径,注意linux的系统是/,而win系统是\\,使用了转义
>>>
'd:\\learnCode\\learnPython\\day6'
os.chdir('..') # 相当于cd到其他路径,‘..’表示上一级,‘.’表示当前级
print(os.getcwd())
>>>
d:\learnCode\learnPython
os.chdir('day6')
os.stat('c.txt') # 获取文件的相关状态信息
>>>
os.stat_result(st_mode=33206, st_ino=1125899910386191, st_dev=2048257096, st_nlink=1, st_uid=0, st_gid=0, st_size=8, st_atime=1595919443, st_mtime=1595919443, st_ctime=1595919439)

2 文件相关函数

  • mkfifo():创建先进先出管道
  • mknod():创建设备文件
  • remove():删除文件
  • unlink(): 删除链接文件
  • rename():重命名
  • stat():返回文件状态信息
  • symlink():创建符号链接
  • utime(): 更新文件时间戳
  • tmpfile():创建并打开新的临时文件
os.rename('c.txt', 'newc.txt')

3 访问权限相关函数

  • access():判定指定用户对某个文件是否有访问权限
  • chmod(): 修改权限
  • chown():修改所属主、属组
  • umask():设置默认权限模式
print(os.access('b.txt', 0)) # 查看用户的访问权限
>>>
True

4 文件描述符相关函数

  • open(): 较低IO的打开文件
  • read(): 较低IO的读文件操作
  • write(): 较低IO的写文件操作
help(os.open) # 这是较低级别的打开
>>>
Help on built-in function open in module nt:

open(path, flags, mode=511, *, dir_fd=None)
    Open a file for low level IO.  Returns a file descriptor (integer).
    
    If dir_fd is not None, it should be a file descriptor open to a directory,
      and path should be relative; path will then be relative to that directory.
    dir_fd may not be implemented on your platform.
      If it is unavailable, using it will raise a NotImplementedError.

5 设备文件相关函数

  • mkdev():创建设备
  • major(): 获取指定设备的主设备号
  • minor():获取指定设备的次设备号

6 文件路径(os.path)相关函数

  • basename(): 文件基名
  • dirname():文件目录名
  • join(): 将多个离散路径整合成一个路径
  • split(): 返回dirname(), basename()元组
  • splitext(): 返回(filename, extension)元组
import os.path
cwd = os.getcwd()
dir1 = os.path.dirname(cwd)
file1 = os.path.basename(cwd)
print(cwd)
print(dir1)
print(file1)
print(os.path.join(dir1, file1))
print(os.path.split(os.getcwd()))
>>>
d:\learnCode\learnPython\day6
d:\learnCode\learnPython
day6
d:\learnCode\learnPython\day6
('d:\\learnCode\\learnPython', 'day6')

返回相关信息:

  • getatime():返回指定文件的最近访问时间
  • getctime():windows环境下是输出文件创建时间;如果是linux环境下ctime代表“状态时间”
  • getmtime():返回文件最近修改时间
  • getsize(): 返回文件的大小(字节)

判断查询:

  • exists(): 判断指定文件是否存在
  • isabs(): 判断指定的路径是否为绝对路径
  • isdir(): 判断指定的路径是否为目录
  • isfile(): 判断指定的路径是否为文件
  • islink(): 判断指定的路径是否为符号链接
  • ismount(): 判断指定的路径是否为挂载点
  • samefile(): 判断两个路径是否指向了同一个文件

7 练习

判断指定文件是否存在,存在则打开,让用户通过键盘反复输入多行数据,追加保存至此文件中

import os
import os.path

filename = 'b.txt'
if os.path.isfile(filename):
    f1 = open(filename, 'a+')

while True:
    line = input("Enter something>")
    if line == 'q' or line == "quit":
        break
    f1.write(line+'\n')
f1.close()

(补充)
实现对象持久存储:

  • pickle,常用来保存字典数据
  • marshal
  • DBM接口
  • shelve模块
import pickle
d1 = {'x':123, 'y':567, 'z':'hello'}
f5 = open('dict.txt', 'ab+') # 注意,必须是二进制文件,所以加个b,不然出错
pickle.dump(d1, f5) # 将对象保存在f5文件中
f5.flush()
f5.close()
f6 = open('dict.txt', 'rb+') # 注意,写出也是要b+,序列形式
d2 = pickle.load(f6)
print(d2)
>>>
{'x': 123, 'y': 567, 'z': 'hello'}

【声明】:学习笔记基于互联网上各种学习资源的个人整理。

以上是本期内容,下期介绍python的函数。

我叫小保,一名计算机视觉爱好者、学习者、追随者,欢迎关注我一起学习。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JackkoLing

感谢你的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值