# 文件操作

### 目录管理(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:'/'
- 建议:统一使用'/'
``` ​

python学习总结---文件操作的更多相关文章

  1. python学习笔记:文件操作和集合(转)

    转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...

  2. python学习日记(文件操作)

    文件操作概述 计算机系统分为:操作系统,计算机硬件,应用程序. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序 ...

  3. 03 python学习笔记-文件操作(三)

    本文内容主要包括以下方面: 1. 文件操作基本认识2. 只读(r, rb)3. 只写(w, wb)4. 追加(a, ab)5. r+读写6. w+写读7. a+写读(追加写读)8. 文件的修改 一.文 ...

  4. python学习day8 文件操作(深度学习)

    文件操作 (day7内容扩展) 1 文件基本操作 obj = open('路径',mode='模式',encoding='编码')obj.write()obj.read()obj.close() 2 ...

  5. python 学习分享-文件操作篇

    文件操作 f_open=open('*.txt','r')#以只读的方式(r)打开*.txt文件(需要与py文件在同一目录下,如果不同目录,需写全路径) f_open.close()#关闭文件 打开文 ...

  6. Python学习笔记——文件操作

    python中,一切皆对象.   一.文件操作流程 (1)打开文件,得到一个文件句柄(对象),赋给一个对象: (2)通过文件句柄对文件进行操作: (3)关闭文件. 文件对象f通过open()函数来创建 ...

  7. Python学习之==>文件操作

    1.打开文件的模式 r,只读模式(默认)[不可写:文件不存在,会报错] w,只写模式[不可读:不存在则创建:存在则删除内容] a,追加模式[不可读:不存在则创建:存在则追加内容] r+,读写模式[可读 ...

  8. Python学习之文件操作

    Python 文件打开方式 文件打开方法:open(name[,mode[buf]]) name:文件路径mode:打开方式buf:缓冲buffering大小 f = open('test.txt', ...

  9. Python学习 :文件操作

    文件基本操作流程: 一. 创建文件对象 二. 调用文件方法进行操作 三. 关闭文件(注意:只有在关闭文件后,才会写入数据) fh = open('李白诗句','w',encoding='utf-8') ...

随机推荐

  1. LCT入门

    前言 \(LCT\),真的是一个无比神奇的数据结构. 它可以动态维护链信息.连通性.边权.子树信息等各种神奇的东西. 而且,它其实并不难理解. 就算理解不了,它简短的代码也很好背. \(LCT\)与实 ...

  2. HDU(3560)成环,并查集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3560 并查集查有几个块,修改了之前我的一个方法(用什么map),直接判断根节点的id是i的个数. 然后 ...

  3. 缓冲区溢出实战教程系列(二):dev c++编译汇编代码

    小伙伴们对我上一篇文章的反应完全出乎了我的意料,感谢大家对我的支持和认可.接下来我会精心的把这一系列课程设计好,尽量详细的展示给大家.上篇文章我列举了一个缓冲区溢出的小例子,并提到了dev c++.o ...

  4. jQuery实现轮播切换以及将其封装成插件(2)

    在上一篇博文中,我们完成了一个简单的轮播切换.它的功能比较简单,仅仅能定时切换图片. 但是有没有这样一种情况.当我们特意的想看某一个轮播显示项时不希望等轮播一圈才能等到,希望通过图上的一些元素,触发某 ...

  5. Mybatis查询报错:There is no getter for property named '*' in 'class java.lang.String

    问题: 执行查询时报错:There is no getter for property named '*' in 'class java.lang.String 原因: 传过去的参数为识别.本例为 p ...

  6. ES6初识-(冲突)数据结构

    Set的用法 元素不能重复--唯一性 WeakSet key值只能是对象 没有clear属性 Map let map=new Map([['a',123],['b',456]]);; WeakMap ...

  7. js | javascript改变style样式和css样式

    转载 在很多情况下,都需要对网页上元素的样式进行动态的修改.在JavaScript中提供几种方式动态的修改样式,下面将介绍方法的使用.效果.以及缺陷. 1.使用obj.className来修改样式表的 ...

  8. tomcat日志切割脚本

    tomcat日志每俩小时切割的脚本如下(这是用定时任务来完成的,此方法无需重启tomcat): time=$(date +%H) end_time=`` a=$end_time BF_TIME=$(- ...

  9. Rsync备份服务部署

    1 Rsync服务器架构规划 在搭建服务之前需要做以下规划设计,其中包括:主机规划表.主机IP地址规划表.主机架构图.主机hosts解析以及linux主机基础优化等 1.1 主机规划表 服务器说明 数 ...

  10. H5拍照、选择图片上传组件核心

    背景 前段时间项目重构,改成SSR的项目,但之前用的图片选择上传组件不支持SSR(server-side-render).遂进行了调研,发现很多的工具.但有的太大,有的使用麻烦,有的不满足使用需求.决 ...