参考自: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模块的更多相关文章

  1. Python文件复制shutil模块

    Python中shutil模块主要用于文件操作,如复制,属性判断等 1.copyfileobj,拷贝文件内容,将文件句柄赋给该方法 def copyfileobj(src, dst, length=1 ...

  2. python文件操作os模块

    Python 统计某一文件夹下文件数量 使用python  pathlib模块 from pathlib import Path dir_path = ' ' print(len(list(Path( ...

  3. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  4. Python第二十天 shutil 模块 zipfile tarfile 模块

    Python第二十天  shutil 模块  zipfile   tarfile 模块 os文件的操作还应该包含移动 复制  打包 压缩 解压等操作,这些os模块都没有提供 shutil 模块shut ...

  5. python中的shutil模块

    目录 python中的shutil模块 目录和文件操作 归档操作 python中的shutil模块 shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数. 目录和文 ...

  6. 第十二章 Python文件操作【转】

    12.1 open() open()函数作用是打开文件,返回一个文件对象. 用法格式:open(name[, mode[, buffering[,encoding]]]) -> file obj ...

  7. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  8. 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()

    嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...

  9. Python:文件操作技巧(File operation)(转)

    Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python #  -*- coding: utf8 -*- spath = " D:/dow ...

  10. 小学生都能学会的python(文件操作)

    小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...

随机推荐

  1. [C#菜鸟]C# Hook (一)

    转过来的文章,出处已经不知道了,但只这篇步骤比较清晰,就贴出来了. 一.写在最前 本文的内容只想以最通俗的语言说明钩子的使用方法,具体到钩子的详细介绍可以参照下面的网址: http://www.mic ...

  2. Vue开发调试神器 vue-devtools

    Vue开发调试神器: vue-devtools 1. 下载Chrome扩展插件GitHub下载地址: https://github.com/vuejs/vue-devtools 建议使用npm淘宝镜像 ...

  3. CentOS7 nginx安装与卸载

    简明清晰,易操作,参照: CentOS7 nginx安装与卸载

  4. Mac下安装lightgbm

    Mac下安装lightgbm 1.安装环境 系统 MacOS Mojave 版本10.14.2 Xcode 10.1 $ clang -v Apple LLVM version 10.0.0 (cla ...

  5. VirtualBox主机虚拟机互通

    首先使用的是桥接模式,桥接模式相当于是使用Hub来把主机以及虚拟机进行关联: 然后就是选择“界面名称”,这里吐槽一下,这里其实是“Interface Name”,Interface代表的是网卡的接口, ...

  6. 32 位bitmap 内存存储 顺序 bgra 前3位 与23位一致。 都是 bgr 呵呵 与rgb 相反

    32 位bitmap     内存存储 顺序   bgra       前3位 与23位一致.   都是 bgr  呵呵 与rgb 相反

  7. golang 导出CSV文件中文乱码的问题

    golang  导出CSV文件中文乱码的问题 解决办法: 在csv文件的开头写入 UTF-8 BOM // 创建文件 dstf, err := os.Create("./data/" ...

  8. jmeter常用性能监听器分析

    jmeter中提供了很多性能数据的监听器,我们通过监听器可以来分析性能瓶颈 本文以500线程的阶梯加压测试结果来描述图表. 常用监听器 1:Transactions per Second 监听动态TP ...

  9. Intellij Idea使用教程汇总篇

    Java编程强大的工具IDEA使用教程及一些快捷键收藏如下: https://blog.csdn.net/fanrenxiang/article/details/80503490

  10. k8s--资源控制器

    资源控制器 1.什么是控制器 Kubernetes中内建了很多controller (控制器) ,这些相当于一个状态机,用来控制Pod的具体状态和行为 Pod 的分类 自主式 Pod:Pod 退出了, ...