<h1 id="文件操作" data-source-line="1">文件操作
<h3 id="目录管理os" data-source-line="3">目录管理(os)
<ul data-source-line="5">
system:执行系统命令
name:查看系统名称
- nt:windows内核
- posix:类unix内核
获取环境变量:
终端操作:
设置:set XXX=yyy
获取:set XXX
getcwd:获取当前工作目录
mkdir:创建目录(不能带中间目录)
makedirs:创建目录(会自动创建中间目录)
stat:查看文件信息(也可以是目录)
相对目录/绝对目录
目录分隔符:
windows:/<span style="color: #000000"> 或 \
类unix:/<span style="color: #000000">
建议:统一使用 /<span style="color: #000000">
说明:在文件操作时,相对目录和绝对目录都可以
listdir:查看目录的直接子文件
path
<span style="color: #008000"> print(path.join('abc/def','hello.py'))
<span style="color: #008000">#<span style="color: #008000"> 提取目录<span style="color: #008000">
<span style="color: #008000"> print(path.dirname('abc/def/hello.py'))
<span style="color: #008000">#<span style="color: #008000"> 提取文件名<span style="color: #008000">
<span style="color: #008000"> print(path.basename('abc/def/hello.py'))
<span style="color: #008000">#<span style="color: #008000"> 切割目录与文件名<span style="color: #008000">
<span style="color: #008000"> print(path.split('abc/def/hello.py'))<span style="color: #008000">
<span style="color: #008000"> dir,name = path.split('abc/def/hello.py')<span style="color: #008000">
<span style="color: #008000"> print(dir,name)
<span style="color: #008000">#<span style="color: #008000"> 切割文件名与后缀<span style="color: #008000">
<span style="color: #008000"> name,ext = path.splitext('hello.py')<span style="color: #008000">
<span style="color: #008000"> print(name,ext)
<span style="color: #008000">#<span style="color: #008000"> 判断文件是否存在(也可以判断目录)<span style="color: #008000">
<span style="color: #008000"> print(path.exists('hello.py'))<span style="color: #008000">
<span style="color: #008000"> print(path.exists('aa'))
<span style="color: #008000">#<span style="color: #008000"> 判断是否是目录文件<span style="color: #008000">
<span style="color: #008000"> print(path.isdir('hello.py'))<span style="color: #008000">
<span style="color: #008000"> print(path.isdir('aa'))
<span style="color: #008000">#<span style="color: #008000"> 判断是否是普通文件<span style="color: #008000">
<span style="color: #008000"> print(path.isfile('hello.py'))<span style="color: #008000">
<span style="color: #008000"> print(path.isfile('aa'))
<span style="color: #008000">#<span style="color: #008000"> 获取文件大小,仅限于普通文件
<span style="color: #0000ff">print(path.getsize(<span style="color: #800000">'<span style="color: #800000">01-os.py<span style="color: #800000">'<span style="color: #000000">))
<span style="color: #008000">#<span style="color: #008000"> 不可以是目录(大小始终为0)
<span style="color: #0000ff">print(path.getsize(<span style="color: #800000">'<span style="color: #800000">aa<span style="color: #800000">'))
<blockquote data-source-line="136">
练习:实现目录大小的统计,需要使用递归
文件操作-2" data-source-line="138">文件操作
- 示例
- 参数
- 打开方式
- 编码方式
- bytes类型
-
fp.close()
-
文件读写
内容<span style="color: #008000">#
<span style="color: #008000"> 一次读取一行<span style="color: #008000"> <span style="color: #008000"> print(fp.readline())<span style="color: #008000">#
<span style="color: #008000"> 读取所有内容,返回一个列表,一行一个元素<span style="color: #008000"> <span style="color: #008000"> lines = fp.readlines()<span style="color: #008000">#<span style="color: #008000"> 判断是否能够进行写操作<span style="color: #008000">
<span style="color: #008000"> print(fp.writable())<span style="color: #008000">
<span style="color: #008000"> fp.write('world')<span style="color: #008000">
<span style="color: #008000"> fp.write(b'gogogo')
-
文件指针
获取文件指针的位置 <span style="color: #008000">#<span style="color: #008000"> 设置指针偏移<span style="color: #008000"><span style="color: #008000"> 参数1:偏移量<span style="color: #008000">
<span style="color: #008000"> 参数2:参考位置,0表示开头,1表示当前,2表示末尾<span style="color: #008000">
<span style="color: #008000"> 带b的方式打开,设置偏移没有问题<span style="color: #008000">
<span style="color: #008000"> 不带b的方式打开,设置偏移会报错
fp.seek(-5,1)
-
os.remove(文件名)
练习:(递归)删除一个目录
打开文件(open)
在上面模式上添加一个字符b,表示二进制方式打开:rb、wb、ab、rb
+、wb+、ab+<span style="color: #000000">说明:没有b的方式文件读写都是str类型,带b的方式文件读写都是bytes
unicode:万国码,将全部国家的字符全部包含进去进行统一编码
utf
s = <span style="color: #800000">'<span style="color: #800000">hello<span style="color: #800000">'.encode(<span style="color: #800000">'<span style="color: #800000">utf-8<span style="color: #800000">'<span style="color: #000000">)
<span style="color: #0000ff">print<span style="color: #000000">(s)
<span style="color: #008000">#<span style="color: #008000"> 解码:bytes => str
b = s.decode(<span style="color: #800000">'<span style="color: #800000">utf-8<span style="color: #800000">'<span style="color: #000000">)
<span style="color: #0000ff">print(b)