python 文件操作、shutil模块
参考自:https://www.cnblogs.com/alex3714/articles/5717620.html
1. 文件基础操作
f = open('test.txt') #打开文件
first_line = f.readline() # 每次读一行,并移动文件指针
print('first line:',first_line) #读一行
print('分隔线'.center(50,'-'))
data = f.read() # 读取剩下的所有内容,会一次性读取到内存,可能导致内存溢出
print(data) #打印文件内容 f.close() #关闭文件
2. with open 语句
上面的文件操作需要手动关闭文件:f.close(),为了避免打开文件后忘记关闭,可以通过管理上下文,当with代码块执行完毕时,内部会自动关闭并释放文件资源,例如:
with open('test.txt','r',encoding='utf-8') as f:
print(f.readline())
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
with open('log1') as obj1, open('log2') as obj2:
pass
3. 打开文件的方式
打开文件的模式有:
- r, 只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写(作为追加模式);可追加】
- w+,写读【先写入,后读取,如果存在文件,先覆盖写入,在读取,没啥用】
- a+,追加写入读取,默认文件指针处在文件的末尾,如果要读取,需要先f.seek(0),而无论文件指针处在什么位置,只要写入,就追加写在文件末尾
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示处理二进制文件(如:图片、视频、音频,FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb
- wb
- ab
4. 常用方法
with open('text.txt','r+',encoding='utf-8') as f:
content = f.read() # 一次性读取文件所有内容,如果文件过大,可能内存溢出
f.readlines() # 一次性读取所有文件的行,生成一个列表,效率低
f.readline() # 读取文件的一行,效率高
f.tell() # 获取文件的指针所在字节位置
f.seek() # 移动文件的指针
f.truncate(8) # 截取文件前8个字节
for line in f: # 循环读取文件的行,效率高
print(line)
f.write('new message') # 写入文件
f.flush() # 刷新缓存,直接将文件写入
2. shutil模块
import shutil f1 = open('a.txt','r')
f2 = open('b.txt','w') # shutil.copyfileobj(fsrc, fdst[, length]) 把fsrc复制到一个新文件fdst里,length代表每次读取的大小,防止内存溢出
shutil.copyfileobj(f1,f2,1024) # copy(src, dst, *, follow_symlinks=True)复制一个文件的路径,到另一个路径(可以为路径或者文件名),follow_symlinks在linux生效,具体搜索硬连接和软连接
shutil.copy('a.txt','../b.txt') # chown(path, user=None, group=None) 改变给定path的所有者和组权限,似乎在linux生效
# shutil.chown() # copy2(src, dst, *, follow_symlinks=True) 复制数据和数据的状态信息
shutil.copy2('a.txt','../b.txt') # copymode(src, dst, *, follow_symlinks=True) 仅拷贝权限。内容、组、用户均不变
shutil.copymode() # copystat(src, dst, *, follow_symlinks=True) 拷贝状态的信息,包括:mode bits, atime, mtime, flags
shutil.copystat() # copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,
# ignore_dangling_symlinks=False) 复制一个文件夹及其内容到另一个文件夹下,ignore过滤条件,可以多个
# 注意,必须要指定一个文件夹,即把a文件夹的内容,复制到父目录的b里面(b一定不能事先存在)
shutil.copytree('a','../b',ignore=shutil.ignore_patterns('*.bat','*.py')) # 获取一个路径的磁盘占用,返回一个三元组(total,used,free)
print(shutil.disk_usage('D:\\')) # 显示支持的打包格式/解压包的格式
print(shutil.get_archive_formats())
print(shutil.get_unpack_formats()) # 打包文件 (包名,格式,要打包的路径)
shutil.make_archive('a_zip','zip','a') # 移动文件或文件夹到另一路径: (源文件路径,目标路径)
shutil.move('a','../') # 注册一个新的打包方式?
shutil.register_archive_format()
shutil.register_unpack_format() # 删除文件夹及其内容,选择是否忽略错误(默认false,没有要删除的文件夹会报错)
shutil.rmtree('a',ignore_errors=True)
# (文件名,[,解压路径,解压方式]) unpack_archive(filename, extract_dir=None, format=None)
shutil.unpack_archive('a.zip','a') # shutil.unregister_archive_format()
# shutil.unregister_unpack_format()
python 文件操作、shutil模块的更多相关文章
- Python文件复制shutil模块
Python中shutil模块主要用于文件操作,如复制,属性判断等 1.copyfileobj,拷贝文件内容,将文件句柄赋给该方法 def copyfileobj(src, dst, length=1 ...
- python文件操作os模块
Python 统计某一文件夹下文件数量 使用python pathlib模块 from pathlib import Path dir_path = ' ' print(len(list(Path( ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python第二十天 shutil 模块 zipfile tarfile 模块
Python第二十天 shutil 模块 zipfile tarfile 模块 os文件的操作还应该包含移动 复制 打包 压缩 解压等操作,这些os模块都没有提供 shutil 模块shut ...
- python中的shutil模块
目录 python中的shutil模块 目录和文件操作 归档操作 python中的shutil模块 shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数. 目录和文 ...
- 第十二章 Python文件操作【转】
12.1 open() open()函数作用是打开文件,返回一个文件对象. 用法格式:open(name[, mode[, buffering[,encoding]]]) -> file obj ...
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
- 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()
嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
- 小学生都能学会的python(文件操作)
小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...
随机推荐
- 将数据库中带出的列,在gridview中影藏起来
前台增加事件:OnRowCreated="GridView1_RowCreated" protected void GridView1_RowCreated(object send ...
- 网站运营文章LIST
如何建立网站地图(site map) ● 伤心SEO之太平洋 ● 关键字密度与网站排名 ● 哪些因素决定网站SEO的价格 ● SEO:站在Google背后的搜钱力量 ● 网站被一搜索屏蔽,郁闷! ● ...
- sensu
https://blog.csdn.net/enweitech/article/details/53763324
- JQuery插件 aos.js
简介: aos.js是一款效果超赞的页面滚动元素动画jQuery动画库插件.该动画库可以在页面滚动时提供28种不同的元素动画效果,以及多种easing效果.在页面往回滚动时,元素会恢复到原来的状态. ...
- expression,statement,definition ,identifier(symbol) ,literal(字面量) 术语
expression: an expression evaluates to a value only statement: a statement containing executable cod ...
- lnmp一键安装包卸载mysql,重新安装报错mysql57-community-release conflicts with mysql-community-release-el6-5.noarch
环境:CentOS Linux release 7.6.1810 lnmp1.5 独立下载mysql仓库 wget -i -c http://dev.mysql.com/get/mysql57-com ...
- Django REST framework JWT学习
1.JWT学习 在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证.我们不再使用Session认证机制,而使用Json Web Token认证机制. Json web toke ...
- xmake新增对Cuda代码编译支持
最近研究了下NVIDIA Cuda Toolkit的编译环境,并且在xmake 2.1.10开发版中,新增了对cuda编译环境的支持,可以直接编译*.cu代码. 关于Cuda Toolkit相关说明以 ...
- webView实现网页缩放
项目中遇到要实现webview上面的网页缩放功能,在网上查了资料加自己实践后得出结论: //缩放开关,设置此属性,仅支持双击缩放,不支持触摸缩放 mWebView.getSettings().setS ...
- Square HDU 1518 搜索
Square HDU 1518 搜索 题意 原题链接 给你一定若干个木棒,让你使用它们组成一个四边形,要求这些木棒必须全部使用. 解题思路 木棒有多种组合方式,使用搜索来进行寻找,这里需要进行优化,不 ...