内容简介:今天我们汇总整理下文件读写的一些事情,对文本分析系列课做一些有意义的补充。涉及到的库包括os、shutil、zipfile文件系统因为下面的操作发生变化,比如压缩解压、新建文件夹、复制移动、移除
最近公众号内推送了我的系列视频教程《 python文本分析:从入门到精通 》,这个课程的分享原则是只讲最简单最好用的知识,用最少的时间去解决最头疼的问题。这样对于 人文社科类 的 python初学者 会降低认知压力,增强学习自信。
今天我们汇总整理下文件读写的一些事情,对文本分析系列课做一些有意义的补充。涉及到的库包括os、shutil、zipfile
获取信息
代码 | 功能 |
---|---|
os.getcwd("path") |
获取代码当前工作路径 |
os.listdir("path") |
获取当前工作文件夹内的文件夹或文件 |
os.scandir("path") |
获取当前工作文件夹内的文件夹或文件 |
os.walk(top) |
通过在top中游走输出在top中的文件名,向上或者向下。每次遍历对象返回的是三元组(root,dirs,files) |
改变文件系统
文件系统因为下面的操作发生变化,比如压缩解压、新建文件夹、复制移动、移除
代码 | 功能 |
---|---|
os.chdir("path") |
更改当前工作路径为path |
os.path.join(dir1,dir2,dir3,...) |
路径拼接为dir1/dir2/dir3 |
os.makedirs("dir1/dir2") |
创建文件夹 |
os.remove("my_file_path") |
移除一个文件 |
os.rmdir("path") |
会删除path路径文件夹,如果path内有文件,移除path会报错 |
os.rename("old", "new") |
对old这个文件或者路径更改为新名new |
shutil.copy("source", "destination") |
复制一个文件或者文件夹(source)到另外一个文件夹(destination) |
shutil.move("source", "destination") |
移动一个文件或者文件夹(source)到另外一个文件夹(destination) |
shutil.rmtree("my_directory_path") |
移除一个文件夹及其内部的所有文件和文件夹 |
压缩与解压
代码 | 功能 |
---|---|
dzipfile.ZipFile('zip文件.zip', 'w') |
新建zip文件 |
zipfile.ZipFile('zip文件.zip', 'r') |
打开zip文件 |
一、获取信息
1.1 os.getcwd()
获取当前工作路径
import os
os.getcwd()
运行得到
'/Users/suosuo/Desktop/20190224文件系统操作方法概括'
1.2 os.listdir()
获取当前工作文件夹内的文件夹或文件
os.listdir()
得到
['.DS_Store', '未命名.ipynb', '.ipynb_checkpoints', 'data', 'data2']
1.3 os.scandir()
获取当前工作文件夹内的文件夹或文件。类似于os.listdir(),但是返回的是可迭代对象
os.scandir()
运行结果
<posix.ScandirIterator at 0x1074b5090>
遇到上面的,我们就要想到for循环迭代,看看ta是什么鬼
for f in os.scandir():
if not f.is_file(): #is_file判断是否是文件
print('这是文件夹:',f)
else:
print('这是文件:', f)
#print(type(f), f)
这是文件: <DirEntry '.DS_Store'>
这是文件: <DirEntry '未命名.ipynb'>
这是文件夹: <DirEntry '.ipynb_checkpoints'>
这是文件夹: <DirEntry 'data'>
这是文件夹: <DirEntry 'data2'>
1.4 os.walk()
随机漫走
os.walk(top='data')
运行得到
<generator object walk at 0x1073d4c78>
得到生成器的数据,也是要想到for循环迭代
for x in os.walk(top='.'):
print(x)
('.', ['.ipynb_checkpoints', 'data', 'data2'], ['.DS_Store', '未命名.ipynb'])
('./.ipynb_checkpoints', [], ['未命名-checkpoint.ipynb'])
('./data', ['test'], ['.DS_Store'])
('./data/test', [], ['.DS_Store', '学习文件操作.txt'])
('./data2', [], [])
二、改变文件系统
2.1 os.chdir()
变换工作路径
print(os.getcwd())
os.chdir('/Users/suosuo/Desktop')
os.getcwd()
/Users/suosuo/Desktop/20190224文件系统操作方法概括
'/Users/suosuo/Desktop'
2.2 os.path.join()
拼接多个字符串,形成新的路径字符串。os.path.join()内不能传入tuple
os.path.join('desktop', 'data', 'python学习.md')
运行得到
'desktop/data/python学习.md'
下面的代码,是个bug
path = ('desktop', 'data', 'python学习', '笔记.md')
os.path.join(path)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-17-9bb1ad13c0bb> in <module>
1 path = ('desktop', 'data', 'python学习', '笔记.md')
----> 2 os.path.join(path)
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/posixpath.py in join(a, *p)
78 will be discarded. An empty last part will result in a path that
79 ends with a separator."""
---> 80 a = os.fspath(a)
81 sep = _get_sep(a)
82 path = a
TypeError: expected str, bytes or os.PathLike object, not tuple
2.3 os.makedirs()
创建新的文件夹
os.chdir('20190224文件系统操作方法概括')
os.makedirs('data2')
2.4 os.remove()
移除一个文件
os.remove('data/移除.txt')
2.5 os.rmdir()
移除文件夹,但是这个被移除的文件夹必须是空的才能移除
#test内有文件,所以移除会报错
os.rmdir('data/test')
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-32-dc6cea8f9fda> in <module>
----> 1 os.rmdir('data/test')
OSError: [Errno 66] Directory not empty: 'data/test'
2.6 os.rename(old, new)
将old文件名(或路径)改为new文件名(或者路径)
os.rename('data/test/重命名rename.txt', 'data/test/重命名rename2.txt')
2.7 shutil.copy(src, dst)
将src复制到dst中
import shutil
shutil.copy('data/移除.txt', 'data2')
data2文件夹中多了一个 "移除.txt"
2.8 shutil.move(src, dst)
将src移动到dst中
shutil.move('data/dong.txt', 'data2')
data文件夹中的dong.txt消失了,data2中出现了dong.txt文件
2.9 shutil.rmtree()
移动一个文件夹内的全部文件和文件夹
shutil.rmtree('data2')
三、压缩与解压
这部分内容实际上之前分享过 文件的压缩与解压库-zipfile、tarfile ,今天就当复习一下吧。zipfile和tarfile是 python 内置库
3.1 新建zip文件
对data文件夹进行压缩
import zipfile
#将 “三体.txt” 压缩到 “三体.zip”中
with zipfile.ZipFile('三体.zip', 'w') as z:
#请注意这里写的是当前文件夹下的文件名
z.write('三体第一部.txt')
z.write('三体第二部.txt')
z.write('三体第三部.txt')
当前文件夹中出现 “三体.zip” 文件
3.2 解压zip文件
with zipfile.ZipFile('三体.zip', 'r') as z:
# 查看压缩包中的文件列表
print(z.namelist())
# 解压 “三体.zip”中的 “三体第一部.txt”文件
z.extract('三体第一部.txt')
# 解压,在当前文件夹下会出现一个名为"三体extractall"的文件夹
z.extractall('三体extractall')
['三体第一部.txt', '三体第二部.txt', '三体第三部.txt']
当前文件夹出现一个 “三体extractall” 文件夹
回复关键词 “20190225” ,得到本文jupyter notebook下载链接
AD、转发、好看
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。