参考自: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. leetcode-easy-array-50. Intersection of Two Arrays II

    mycode  77.78% class Solution(object): def intersect(self, nums1, nums2): """ :type n ...

  2. Hook exe 和 file

    c#拦截程序的运行 EasyHook  + win7 64位 LocalHook.GetProcAddress("Kernel32.dll", "CreateProces ...

  3. SpEL 实例

    SpEl 实例 基于 Spring 解析 @RestController @RequestMapping("/spel") @Slf4j public class SpELCont ...

  4. leetcode 1122. 数组的相对排序 (python)

    1.题目描述 给你两个数组,arr1 和 arr2, arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中 ...

  5. pandas库简介和数据结构

    pandas简介 pandas是一个强大的Python数据分析的工具包.是基于Numpy来构件的. pandas提供快速.灵活和富有表现力的数据结构. 主要功能: 具备对其功能的数据结构DataFra ...

  6. Python基本语法_集合set/frozenset_内建方法详解

    目录 目录 前言 软件环境 可变集合Set set函数创建集合 创建空集合 集合元素的唯一性 集合推导式 set类型对象的内置方法 add增加一个元素 remove删除一个元素 pop随机删除并返回一 ...

  7. Python基本语法_变量作用域LEGB

    目录 目录 软件系统 变量的作用域 高级语言对数据类型的使用过程 作用域的产生 作用域的类型 Llocal局部作用域 Eenclosing嵌套作用域 Gglobal全局作用域 Bbuilt-in内置作 ...

  8. C# user32.dll 找窗口 填数据

    工具:SpyLite [DllImport("user32.dll", EntryPoint = "FindWindow")] private extern s ...

  9. springmvc 获取request response

    RequestContextHolder 获取request public HttpServletRequest getRequest() { return ((ServletRequestAttri ...

  10. C语言的指针和数组

    指针和内存 指针变量也是个变量,不过保存的是另一个变量的地址.另外编译器还会记住指针所指向变量的类型,从而在指针运算时根据变量类型采取不同操作. 例如,char * a 定义了char 类型的指针变量 ...