码迷,mamicode.com
首页 > 其他好文 > 详细

文件操作

时间:2019-01-04 21:26:22      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:新建   拷贝   port   文件名   内容   sdi   open   color   rename   

# 文件操作

### 目录管理(os)

- 示例:

  ```python
  import os

  # 执行命令
  # 清屏
  # os.system(cls)
  # 调出计算器
  # os.system(calc)

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

  # 获取环境变量
  # print(os.environ[path])
  # print(os.environ.get(pathxx, default))
  # 与上式等价
  # print(os.getenv(pathxx, default))
  print(os.getenv(xxx, default))
  ```

- 查看当前工作目录

  ```python
  print(os.getcwd())
  ```

- 创建目录

  ```python
  # 新建目录
  # os.mkdir(test)
  # 不能创建中间目录,否则会失败
  # os.mkdir(a/b/c)
  # 可以创建中间目录
  os.makedirs(a/b/c)
  ```

- 删除目录

  ```python
  # 删除目录
  # os.rmdir(test)
  # 只能删除空目录,不能删除有内容的目录
  os.rmdir(a)
  ```

- 重命名

  ```python
  os.rename(test2, test)
  ```

- 查看文件信息

  ```pytho
  stat = os.stat(01-os.py)
  print(stat.st_size)
  ```

- 查看指定目录内容

  ```python
  print(os.listdir(os.getcwd()))
  ```

- path使用

  ```python
  import os

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

  # 提取目录
  # print(os.path.dirname(abc/def/hello.py))
  # print(os.path.dirname(C:/Apache24/htdocs/code/day08))

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

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

  # 切割路径名与后缀
  # print(os.path.splitext(abc/def/hello.py))
  # print(os.path.splitext(hello.py))

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

  # 判断是否是目录
  # print(os.path.isdir(01-os.py))
  # print(os.path.isdir(a))

  # 判断是否是文件
  # print(os.path.isfile(01-os.py))
  # print(os.path.isfile(a))

  # 获取文件大小,只适用于文件,不能是目录
  print(os.path.getsize(01-os.py))
  print(os.path.getsize(a))
  ```

### 文件管理

- 打开文件

  - 示例

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

  - 参数

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

  - 打开方式

  ```
  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())
  # 判断是否可写
  # print(fp.writable())

  # 读取指定长度内容,默认读取全部
  # content = fp.read(5)
  # print(content)

  # 写操作
  # fp.write(123)
  ```

- 操作位置

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

  # 设置操作位置
  # 参数1:偏移量
  # 参数2:参考位置,0表示开头,1表示当前位置,2表示文件末尾
  # 当以bytes方式操作时没有问题,但是以str方式操作时只能设置从开头的偏移
  fp.seek(-3, 2)
  ```

### bytes类型

- 示例:

  ```python
  # s = bhello
  # print(s, type(s))

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

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


### 环境变量

- 设置:`set 名称=值`

- 获取:`set 名称`

- 代码:

  ```python
  # print(os.environ[path])
  # print(os.environ.get(pathxx, default))
  # 与上式等价
  # print(os.getenv(pathxx, default))
  print(os.getenv(xxx, default))
  ```


### 文件目录

- 目录分隔符
  - Windows:/\‘都行
  - 类unix:/
  - 建议:统一使用/
- 目录名词
  - 相对目录:有参考的目录叫相对目录
    - . 表示当前目录
    - .. 表示上一级目录
  - 绝对目录:没有参考的目录叫绝对目录
    - windows:以盘符开头的目录
    - 类unix:以/开头的目录

### 练习:

- 实现文件的拷贝功能,需要考虑大文件的操作。

- 删除一个目录,需要进行递归操作

- 拷贝一个目录

- 移动一个目录

- 整理目录

  - 一个目录下有各种文件,也有文件夹
  - 将所有的文件夹都放在DIRS中
  - 将所有无后缀的文件都放在OTHERS中
  - 将有后缀的文件放在后缀大写的目录下
  - 示例:

  ```
  整理前:
  test/
      dir1/
      dir2/
      dir3/
      1.txt
      2.txt
      3.py
      4.py
      123
      456
  整理后:
  test/
      DIRS/
          dir1/
          dir2/
          dir3/
      TXT/
          1.txt
          2.txt
      PY/
          3.py
          4.py
      OTHERS/
          123
          456
  ```

  ?

 

文件操作

标签:新建   拷贝   port   文件名   内容   sdi   open   color   rename   

原文地址:https://www.cnblogs.com/liangliangzz/p/10222195.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!