ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【Python从零到壹】Python文件的操作详解

2021-04-07 14:55:07  阅读:148  来源: 互联网

标签:fp 文件 Python 零到 详解 file 打开 os size



文章目录

    • 1. 文件的读写原理:
    • 2. 常用的文件打开模式
    • 3. 文件对象的常用方法
    • 4. 目录的相关操作


1. 文件的读写原理:

文件的读写称为I/O操作。

操作原理:
在这里插入图片描述
.py文件是用解释器去运行,调用OS操作系统的资源,去操作磁盘上的文件。

操作流程: 在去操作一个文件的文件的时候,首先打开或者创建一个文件,进行读或者写。
读: 从文件拿到内存当中来
写:把内存的文件放入文件中

最后进行关闭资源。

内置函数: open() 可以创建或者打开一个文件

语法规则:
file=open(filename [mode,encoding]

打开模式默认为只读
默认文本中的字符编码格式为gbk

# 作者:互联网老辛# 开发时间:2021/4/5/0005 8:23file=open('a.txt',encoding='utf-8')print(file.readlines())file.close()

readlines这样会把读取的数据写入一个列表中。

2. 常用的文件打开模式

文件操作:
os.mknod(“test.txt”) 创建空文件
fp = open(“test.txt”,w) 直接打开一个文件,如果文件不存在则创建文件

关于open 模式:

参数含义
r以只读的模式打开文件,文件的指针会放到文件的开头
w以写方式打开,
a以追加模式打开 (从 EOF 开始, 必要时创建新文件)
b以二进制方式打开文件,不能单独使用,需要和其他模式共用,比如rb
r+以读写模式打开
w+以读写模式打开 (参见 w )
a+以读写模式打开 (参见 a )
rb以二进制读模式打开
wb以二进制写模式打开 (参见 w )
ab以二进制追加模式打开 (参见 a )
rb+以二进制读写模式打开 (参见 r+ )
wb+以二进制读写模式打开 (参见 w+ )
ab+以二进制读写模式打开 (参见 a+ )

案例1:

# 作者:互联网老辛# 开发时间:2021/4/5/0005 8:23file=open('b.txt','w')file.write("python")file.close()

这样会新建一个b.txt,如果原来就已经有了,就替换。

二进制文件: 把数据用字节的方式进行存储,无法用记事本打开。比如mp3.图片

3. 文件对象的常用方法

方法含义
fp.read([size])#size为读取的长度,以byte为单位
fp.readline([size])#读一行,如果定义了size,有可能返回的只是一行的一部分
fp.readlines([size])#把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
fp.write(str)#把str写到文件中,write()并不会在str后加上一个换行符
fp.writelines(seq)#把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。
fp.close()#关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。 如果一个文件在关闭后还对其进行操作会产生ValueError
fp.flush()#把缓冲区的内容写入硬盘
fp.fileno()#返回一个长整型的”文件标签“
fp.isatty()#文件是否是一个终端设备文件(unix系统中的)
fp.tell()#返回文件操作标记的当前位置,以文件的开头为原点
fp.next()#返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。
fp.seek(offset[,whence])#将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
fp.truncate([size])#把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。

4. 目录的相关操作

目录操作:

  • 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”) 换路径

案例:

# 作者:互联网老辛# 开发时间:2021/4/5/0005 8:23import os#os.system('notepad.exe')  #打开记事本#os.system('calc.exe')  #打开计算器##直接调用可执行文件#os.startfile('D:\\Software\\WeChat\\WeChat.exe')  #打开微信print(os.getcwd())  #查看当前目录print(os.listdir('../vippython'))  #查看vippython中包含的目录os.mkdir('d_file') #创建文件夹

标签:fp,文件,Python,零到,详解,file,打开,os,size
来源: https://blog.51cto.com/xinsz08/2690223

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有