博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
复习文件操作
阅读量:5058 次
发布时间:2019-06-12

本文共 3214 字,大约阅读时间需要 10 分钟。

# 文件操作

### 目录管理(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 = b'hello'
# 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
456
整理后:
test/
DIRS/
dir1/
dir2/
dir3/
TXT/
1.txt
2.txt
PY/
3.py
4.py
OTHERS/
456
```

转载于:https://www.cnblogs.com/wdz1226/p/10508473.html

你可能感兴趣的文章
浅谈C++底层机制
查看>>
STL——配接器、常用算法使用
查看>>
第9课 uart
查看>>
Range和xrange的区别
查看>>
BZOJ 1010 [HNOI2008]玩具装箱 (斜率优化DP)
查看>>
java-动态规划算法学习笔记
查看>>
STL容器之vector
查看>>
Linux 内核中断内幕
查看>>
DNS负载均衡
查看>>
无法向会话状态服务器发出会话状态请求
查看>>
数据中心虚拟化技术
查看>>
Oracle OEM 配置报错: No value was set for the parameter DBCONTROL_HTTP_PORT 解决方法
查看>>
01入门
查看>>
python正则表达式
查看>>
嵌套循环连接(nested loops join)原理
查看>>
shell统计特征数量
查看>>
复习文件操作
查看>>
C#Hashtable与Dictionary性能
查看>>
10个让你忘记 Flash 的 HTML5 应用演示
查看>>
8个Python面试必考的题目,小编也被坑过 ToT
查看>>