文章目录

  • 读文件操作
  • 写操作
  • 文件的复制
  • 3种方法替代readlines()
  • 二进制文件的写入
  • 二进制文件读取
  • 文件指针
  • 各种系统操作
  • 各种目录操作
  • os模块
  • 绝对路径:总是从根文件夹开始,Window 系统中以盘符(C:、D:)作为根文件夹,而 OS X 或者 Linux 系统中以 / 作为根文件夹。
  • 相对路径:指的是文件相对于当前工作目录所在的位置。例如,当前工作目录为 “C:\Windows\System32”,若文件 demo.txt 就位于这个 System32 文件夹下,则 demo.txt 的相对路径表示为 “.\demo.txt”(其中 .\ 就表示当前所在目录)。
    相对路径和绝对路径详解

根据逻辑上的编码的不同,可以区分为文本文件和二进制文件。
f = file(name[, mode[, buffering]])
name 文件名
mode 选项,字符串
buffering 是否缓冲 (0=不缓冲,1=缓冲, >1的int数=缓冲区大小)
系统函数:open()打开文件。

读文件操作

open(path/filname,'rt')---->返回值:stream(管道)
container=stream.read() --->读取管道中的内容
如果传递path/filename有误则输出:FileNotFoundError
stream=open(r'a.txt','r')
# container=stream.read()  #读流里面的任何东西
# print(container)
result=stream.readable()  #判断是否可以读取
print(result)
# line=stream.readline()
# print(line)  #此时没有任何东西,因为在流里的东西都读完了
#如果前面注释掉,用这个加一个循环可以一行一行的读出
'''
while True:line=stream.readline()  #每读一行加一个换行符print(line)if not line:break
'''
lines=stream.readlines()  #保存在列表中
print(lines)

总结:
read() 读取所有内容
readline() 一行一行的读取内容,每次读取一行加一个换行符
readlines() 读取所有行内容保存在列表中
readable() 是否可读

stream=open(r'a.jpe','rb') #读取图片文件参数rb不可以省略,因为默认为rt读取文本文档
container=stream.read()
print(container)

写操作

'''
mode='w' 表示写操作  将原来的内容清空再写
方法:
write(内容)
writelines(Iterable) 没有换行效果
'''
stream=open(r'a.txt','a')
s='''
你好!欢迎来到这里,给你一个金币游戏王:李白
'''
result=stream.write(s)
stream.write('杜甫')
stream.writelines(['赌圣\n','赌侠\n'])
print(result)  #只要未释放,则可以一直写
stream.close()

文件的复制

'''
with 结合open使用,可以自动帮我们释放资源
'''
with open(r'first.jpg','rb') as f:container=f.read()with open(r'last.jpg','wb') as f1:f1.write(container)
print("文件复制完成")

3种方法替代readlines()

readlines()方法,当文件很大时需要占用很大的内层。
方法一:结合循环结构和readline()方法。

f=open(r'a.txt')
line=f.readline()
while line:print(line,end='')line=f.readline()
f.close

方法二:利用iter(文件对象)返回一个迭代器,从而降低对内存的占用。

f=open(r'a.txt')
for line in iter(f):print(line,end='')
f.close()

方法三:

f=open(r'a.txt')
for line in f:print(line,end='')
f.close()

二进制文件的写入

方法一:struct.Struct对象中的pack()方法将数据转换为二进制的字节串,然后好用write()方法,写入文件。

import struct
#待存储的数据
values=(8,b'abc',9.9,True)
#传入格式字符串创建Struct对象
s=struct.Struct('I3sf?')
#利用Struct对象中的pack方法将数据转换为二进制字节串
packed_data=s.pack(*values)
f=open(r'example7_2.dat','wb')
f.write(packed_data)
f.close()

方法二:用pickle()方法中的dump()方法将数据转换为二进制并直接写入文件。

import pickle
s='好好学习'
li=[1,2,'天天向上',9.9]
d={1:10,2:20}
x=8
y=8.8
f=open('example7_2.dat','wb')
pickle.dump(s,f)
pickle.dump(li,f)
pickle.dump(d,f)
pickle.dump(x,f)
pickle.dump(y,f)
f.close()

二进制文件读取

import pickle
f=open('example7_2.dat','rb')
try:while True:x=pickle.load(f)  #五内容可读时抛出异常print(x)
except EOFError:print("读取完毕!")
f.close()

文件指针

文件对象f的内置方法,f.seek(offset[,where])移动指针的位置进而实现文件数据的灵活读写。
where默认值为0就是文件头的位置,如果为1表示为指针当前位置,为2,则参照点为文件尾。
offset取正值朝文件尾位置移动,取负值则相反。
文件指针:
文件被打开后,其对象保存在 f 中, 它会记住文件的当前位置,以便于执行读、写操作,这个位置称为文件的指针( 一个从文件头部开始计算的字节数 long 类型 )。
文件打开时的位置:
以"r" “r+” “rb+” 读方式, “w” “w+” "wb+"写方式 打开的文件,
一开始,文件指针均指向文件的头部。
获取文件指针的值:
L = f.tell() 
移动文件的指针
转载:文件操作总结

各种系统操作

 f.seek(   偏移量, 选项 )选项 =0 时, 表示将文件指针指向从文件头部到 "偏移量"字节处。选项 =1 时, 表示将文件指针指向从文件的当前位置,向后移动 "偏移量"字节。选项 =2 时, 表示将文件指针指向从文件的尾部,,向前移动 "偏移量"字节。
得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:os.remove()删除多个目录:os.removedirs(r“c:\python”)检验给出的路径是否是一个文件:os.path.isfile()检验给出的路径是否是一个目录:os.path.isdir()判断是否是绝对路径:os.path.isabs()检查是否快捷方式os.path.islink ( filename )检验给出的路径是否真地存:os.path.exists()返回一个路径的目录名和文件名:os.path.split() eg os.path.split('/home/swaroop/byte/code/poem.txt') 结果:('/home/swaroop/byte/code', 'poem.txt')分离扩展名:os.path.splitext()获取路径名:os.path.dirname()获取文件名:os.path.basename()运行shell命令: os.system()读取和设置环境变量:os.getenv() 与os.putenv()给出当前平台使用的行终止符:os.linesep Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
指示你正在使用的平台:os.name 对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
重命名:os.rename(old, new)创建多级目录:os.makedirs(r“c:\python\test”)创建单个目录:os.mkdir(“test”)获取文件属性:os.stat(file)修改文件权限与时间戳:os.chmod(file)终止当前进程:os.exit()获取文件大小:os.path.getsize(filename)

各种目录操作

os.mkdir("file") 创建目录复制文件:
shutil.copyfile("oldfile","newfile") oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") oldfile只能是文件夹,newfile可以是文件,也可以是目标目录复制文件夹:
shutil.copytree("olddir","newdir") olddir和newdir都只能是目录,且newdir必须不存在重命名文件(目录)
os.rename("oldname","newname") 文件或目录都是使用这条命令移动文件(目录)
shutil.move("oldpos","newpos")删除文件
os.remove("file")删除目录
os.rmdir("dir")只能删除空目录
shutil.rmtree("dir") 空目录、有内容的目录都可以删转换目录
os.chdir("path") 换路径ps: 文件操作时,常常配合正则表达式:
img_dir = img_dir.replace('\\','/')

os模块

Python os.path模块常见函数用法(实例+详细注释)
os模块

浅析Python文件操作相关推荐

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

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

  2. python关闭读写的所有的文件-Python文件操作:文件的打开关闭读取写入

    Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...

  3. Python文件操作学习总结

    Python读写文件 1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open( ...

  4. 【Python】学习笔记总结3(Python文件操作)

    文章目录 三.Python文件操作 1.打开`open('文件名','打开模式')` 2.写操作 3.读操作 4.With上下文管理对象 小结 案例 5.文件定位 三.Python文件操作 1.打开o ...

  5. python文件操作实验总结,[干货分享]Python文件操作技巧总结

    引言 小伙伴们,今天给大家讲解一下python程序下的文件操作完整技巧梳理,都是笔者总结的干货.通过本文阅读,不仅可以带来生产力提升,也可以开发小脚本为生活带来乐趣.         首先不知道大家对 ...

  6. 关于python文件操作

    关于python文件操作 总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当 ...

  7. Python文件操作与函数目录

    文件操作 python文件操作 函数 Python函数学习--初步认识 Python函数学习--作用域与嵌套函数 Python函数学习--匿名函数 python内置函数 Python函数学习--递归 ...

  8. python文件操作的方法_python文件操作的方法介绍

    文件操作 1.open()函数 open()函数主要用于文件处理,一般分为下面3个过程:1.打开文件 2.操作文件 3.关闭文件 常见的格式示例:f = open('note.txt','r') f. ...

  9. python打开鼠标指定文件夹_学会python文件操作,鼠标好像没用了,学习python第10天...

    电影是人类对未来的向往,在<黑客帝国>中,我们看到了一个数字化的社会,而当你学会python文件操作,你也就离你向往的黑客近一点了,用程序来直接影响电脑上的其他文件,只需要几行代码就搞定. ...

最新文章

  1. 在ubuntu下设置eclipse开发STM32等嵌入式设备
  2. 可微分的「OpenCV」:这是基于PyTorch的可微计算机视觉库
  3. 有无符号的整数、二进制
  4. C++所提供的类模板应用(堆栈)
  5. 基于PLSQL的数据库备份方法及如何解决导出clob和blob类型数据报错的问题
  6. 什么是SQL 注入?
  7. java 添加一个线程、创建响应的用户界面 。 演示示例代码
  8. 复制(Copying)
  9. java 文件缓冲区_Java开发笔记(八十六)通过缓冲区读写文件
  10. 快速排序quicksort算法细节优化(一次申请内存/无额外内存排序)
  11. 程序固化到优盘中_将Windows 8/10 系统装进优盘
  12. LeetCode 1071. 字符串的最大公因子
  13. mysql2005安装asp_asp连接sql server2005数据库
  14. DAY3 购物车程序
  15. objective-c 中的关联介绍
  16. jQuery 操作表单
  17. python目前版本强势英雄_最强竟然不是灭霸|用Python给漫威和DC英雄综合实力排位...
  18. 从 NASL 说开:低代码编程语言能饭否
  19. java 实现橡皮擦_基于canvas剪辑区域功能实现橡皮擦效果
  20. Windows 共享无线上网 无法启动ICS服务解决方法(WIN7 ICS服务启动后停止)

热门文章

  1. java里面怎么开根号_新手求解呀!!!!!!!怎么开根号,为嘛我开不了
  2. 4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)
  3. 第三十五天:XSS跨站反射存储DOM盲打劫持
  4. 【Java项目】好客租房——数据库集群部署
  5. 「基因组学」使用CAFE进行基因家族扩张收缩分析
  6. Win10图片打开方式没有“Windows照片查看器”,如何找回?
  7. Oracle公司中文翻译为“甲骨文”的来源是什么?
  8. 机器学习的算法分类、优劣比较和选择
  9. Nature 曹云龙/谢晓亮等破解新冠病毒趋同进化机制,将为抗新冠病毒添新药!...
  10. 论文阅读:ICCV2021 TransReID: Transformer-based Object Re-Identifification