python学习总结---文件操作

本文详细介绍了Python中文件和目录的操作方法,包括使用os模块进行目录管理,如创建、删除目录,以及文件的打开、读写、关闭等基本操作。同时,探讨了不同文件打开模式、编码方式和bytes类型的使用。
# 文件操作

### 目录管理(os)

- 示例

  ```python
  # 执行系统命令
  # 清屏
  # os.system('cls')
  # 调出计算器
  # os.system('calc')

  # 查看操作系统类型
  # nt:表示windows,posix:表示类unix
  # print(os.name)
  ```

- 查看当前工作目录

  ```python
  import os
  #查看当前工作目录
  print(os.getcwd())
  ```

- 创建目录:mkdir

  ```python
  # os.mkdir('test')
  # 不能创建中间目录
  os.mkdir('a/b/c')
  ```

- 创建目录:makedirs

  ```python
  # 可以创建中间目录
  os.makedirs('a/b/c')
  ```

- 删除目录:rmdir

  ```python
  # 删除目录:只能是空目录
  # os.rmdir('test')
  # 不能删除非空目录
  os.rmdir('a')
  ```

- 修改名称:rename

  ```python
  # 重命名:目录和文件都可以
  # os.rename('a', 'aa')
  os.rename('test.py', 't.py')
  ```

- 查看文件信息:stat

  ```python
  # 查看文件信息:可以是目录
  print(os.stat('t.py'))
  print(os.stat('aa'))
  ```

- 查看目录文件信息:listdir

  ```python
  # 查看目录文件信息
  print(os.listdir(os.getcwd()))
  ```

- path:关于目录相关的模块

  ```python
  from os import path
  import os

  # 目录拼接
  # print(path.join('abc/def/', 'hello.py'))

  # 提取目录
  # print(path.dirname('abc/def/hello.py'))
  # print(path.dirname(os.getcwd()))

  # 提取文件名
  # print(path.basename('abc/def/hello.py'))
  # print(path.basename(os.getcwd()))

  # 切割路径与文件名
  # print(path.split('abc/def/hello.py'))
  # dir, name = path.split('abc/def/hello.py')
  # print(dir, name)

  # 切割文件名与后缀
  # print(path.splitext('hello.py'))
  # print(path.splitext('abc/def/hello.py'))

  # 判断文件是否存在,可以是目录
  # print(path.exists('aa'))

  # 判断是否是目录文件
  # print(path.isdir('t.py'))
  # print(path.isdir('aa'))

  # 判断是否是普通文件
  # print(path.isfile('t.py'))
  # print(path.isfile('aa'))

  # 获取文件大小,仅限于文件
  print(path.getsize('t.py'))
  # 对于目录会有问题
  print(path.getsize('aa'))
  ```

  > 练习:统计一个目录的大小,需要使用递归


### 文件管理

- 打开文件(open)

  - 示例

  ```python
  fp = open('00-test.txt', 'r')
  ```

  - 参数

  ```
  file:操作的文件名
  mode:打开的方式
  endoding:编码方式,通常不用指定,系统会自动识别
  ```

  - 打开方式

  ```
  r:只读方式,文件不存在会报错
  w:只写方式,文件不存在则创建,存在则清空
  a:追加方式,文件不存在则创建,存在直接打开(不会清空),只能向最后追加
  r+:在r方式基础上添加可写的权限
  w+:在w方式基础上添加可读的权限
  a+:在a方式基础上添加可读的权限

  在上面的打开上添加一个字符b,表示以二进制的方式进行操作:rb、wb、ab、rb+、wb+、ab+
  说明:没有添加b的打开方式,默认的读写都是以字符串形式操作的, 带b的是以bytes形式进行的
  ```

  - 编码方式

  ```
  ASCII:美国信息交换标准代码(128)
  ansi:扩展的ASCII(256)
  gb2312:中国的ansi
  gbk:扩充的gb2312

  unicode:万国码,将所有国家的所有字符全部进行统一编码
  utf-8:一种可变长度的unicode实现方案,而且对中文支持比较友好。
  ```

- 关闭文件

  ```python
  fp.close()
  ```

- 文件读写

  ```python
  # 判断是否可读
  # print(fp.readable())
  # 读取指定长度内容
  # content = fp.read(5)
  # 读取一行
  # content = fp.readline()
  # 读取所有的行,返回一个列表
  # content = fp.readlines()

  # 判断是否可写
  # print(fp.writable())
  # 写入内容
  # fp.write('hello')
  ```

- 操作位置

  ```python
  # 文件操作位置
  # print(fp.tell())

  # 设置操作位置
  # 参数1:偏移量
  # 参数2:参考位置,0:开头,1:当前位置,2:结束
  # 以bytes形式读写seek没有问题,以str型是读写的seek只能设置从开头偏移
  fp.seek(5, 0)
  ```

- 文件删除

  ```
  os.remove('文件名')
  ```

  > 练习:删除一个目录,需要使用递归

### bytes类型

- 示例:

  ```python
  # s = b'hello'
  # print(s)
  # print(type(s))

  # 编码:str => bytes
  s = 'hello'.encode('utf-8')
  print(type(s))

  # 解码:bytes => str
  b = s.decode('utf-8')
  print(b, type(b))
  ```


### 自行学习

- StringIO
- BytesIO

 环境变量

- 设置:`set 名称=值`

- 获取:`set 名称`

- 代码:

  ```python
    import os

    # 获取环境变量
    # print(os.environ['path'])
    # 不存在也不报错
    # print(os.environ.get('abc', 'hello'))
    # 等价于上面的式子
    print(os.getenv('abc', 'world'))  
  ```

### 目录表示

- 相对目录:有参考的目录
  - '.'表示当前目录,'./'通常可以省略
  - '..'表示上一级目录,上上一级目录:`../../`
- 绝对目录:
  - windows:盘符开头的目录
  - 类unix:以'/'开头的目录
- 目录分隔符
  - windows:'/''\'
  - 类unix:'/'
  - 建议:统一使用'/'
  ```

  ​
posted on 2018-09-08 17:04 liangzhiwen 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lzw19951020/p/9650028.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值