1、文件定义

(1)、什么是文件?

文件是操作系统为用户或者应用程序提供一个读写硬盘的虚拟单位

文件的核心就是读写,即我们只需要对于进行读写操作,就是对操作系统发起请求,然后由操作系统将用户或者应用程序对文件的读写操作转化成具体的硬件指令。

(2)、为什么要有文件?

因为内存无法永久保存数据,如果要永久保存数据我们要存到硬盘,而操作文件就可以实现对硬件的操作

(3)、如何用文件

name = 'qqc'

先把内存的数据存到硬盘中

再把硬盘的数据读到内存中

(4)文件操作流程

f = open(r'E:\SH_fullstack_s2\day08\a.txt',mode='r') 向操作系统发起请求,要求操作系统打开文件,占用操作系统资源

data = f.read()  向操作系统发起读的请求,会被操作系统转成具体的硬盘操作,将内容由硬盘读入内存

f.close  向操作系统发起请求,让操作系统关不文件,回收系统资源

总结:

打开文件

读写

关闭

2、路径

  1. 1)、绝对路径:从盘符(C:\\ E:\\ D:\\)开始写一个完整的路径
    2)、相对路径:相对于当前执行文件所在的文件夹开始找
    f =open(r,'a\atxt') r 表示后面的都是原生字符串
  2.  
  3. 3、文件的打开模式
    1)控制读写文件内容的结果又两种:t模式text,b模型bytes
    注意:
    1tb这两种模式均不能单独使用,都需要与r/w/a(读,写,追加)之一连用
    2、默认的内容格式是t
    3、只有文本文件才能用t模式,也只有文本文件才有字符编码的概念
    2)操作文件的基础模式有三种:
    1read,只读模式
    在文件不存在时会报错,在文件存在的时候回将文件指针移动到开头
  1. f=open(r'b.txt',mode='rt',encoding='utf-8')
    # data1=f.read()
    # print('第一次:',data1)
    # # print(type(data1))
    #
    # # data2=f.read()
    # # print('第二次:',data2)
    # f.close()
  2.  
  3. # f=open(r'b.txt',mode='rt',encoding='utf-8')
    # data2=f.read()
    # print('第二次:',data2)
    # f.close()
  4.  
  5. 2、只写模式,write,只能写不能写读
    文件不存在时会建空文件,文件存在时会将文件清空
  1. # f=open(r'c.txt',mode='wt',encoding='utf-8')
    # # print(f.readable())
    # # f.read()
    # # f.write('你好啊我的天\n你好啊我的地\n啊啊啊啊啊啊\n')
    # # f.write('4444\n')
    # # f.write('5555')
    #
    # lines=['1111\n','2222\n','33333\n']
    # # for line in lines:
    # # f.write(line)
    # f.writelines(lines)
    #
    # f.close()
  1. 3、只追加写模式 a
    只能写,不能读
    在文件不存在时会创建空文件,在文件存在的时候会将指针移动蛋文件末尾
  1. # f=open('d.txt',mode='at',encoding='utf-8')
    # print(f.readable())
    # f.read()
  2.  
  3. # f.write('555555\n6666\n')
    # f.writelines(['77777\n','8888888\n','999999999\n'])
  4.  
  5. # f.close()
  6.  
  7. b:二进制模式
    注意:
    1、一定不能指定字符编码,只有t模式才与字符编码有关
    2b 是二进制模式,是一种通用的文件读取模式,因为所有的文件在硬盘中都是以二进制形式存放的
  1. 1f=open('egon.jpg','rb') 读图片
    # data=f.read()
    # print(type(data))
    # f.close()
  1.  
  1. 2with open(r'D:/shangke.mp4','rb') as f:
    print(f.read() ) 读视频
  1.  
  1.  
  1. 3)# 文件复制操作
    with open(r'D:/shangke.mp4','rb') as f: #读取视频文件
    data = f.read()
    print(data)
    f= open(r'E:/英雄时刻/shan.mp4','wb') #将视频写入所指定的新的路径
    f.write(data)
  1.  
  1. 4with open(r'c','wb')as f:
    # data=f.read()
    f.write('您好\n'.encode('UTF-8') ) #用二进制模式写,需要把所写的内容进行编码
  1.  
  1. 5with open(r'c','r',encoding= 'UTF-8')as f,\
    open(r'qqc','a',encoding= 'UTF-8')as f1:
    f1.write(f.read() ) #将c文件的内容读出来,追加到qqc文件中
  2.  
  3. 循环读
  1. #循环读
    # with open(r'qqc','r',encoding= "UTF-8")as f:
    # for y in f:
    # print(y)
  2.  
  3. # with open(r'qqc','rb')as f:
    # for x in f:
    # print(x)
  1.  
  1.  

phtnon 文件操作的更多相关文章

  1. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  2. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  3. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  4. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  5. SQL Server附加数据库报错:无法打开物理文件,操作系统错误5

    问题描述:      附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf ...

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  8. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  9. Python的文件操作

    文件操作,顾名思义,就是对磁盘上已经存在的文件进行各种操作,文本文件就是读和写. 1. 文件的操作流程 (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 现有 ...

随机推荐

  1. Java接口自动化测试之HTTPClient学习(四)

    pom.xml  文件中dependency <dependencies> <dependency> <groupId>org.testng</groupId ...

  2. 快速部署网络爬虫框架scrapy

    1. 安装Anaconda,因为Anaconda基本把所有需要依赖的环境都一键帮我们部署好了,不需要再操心其他事了,进官网选择需要下载的版本:https://www.anaconda.com/down ...

  3. asp.net core WebApi 快速入门

    参考:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.1 官网的例子 直接 ...

  4. Nodejs通过账号密码连接MongoDB数据库

    转自https://blog.csdn.net/szu_lzz/article/details/77435804#commentBox 1.创建管理员 首先开启Mongo服务,然后切换admin数据库 ...

  5. BZOJ5084[hashit]

    题解: 后缀自动机 我们可以通过建立trie 把询问变成询问一些点的并 把trie建立成SAM和广义SAM基本相同,就是在父亲和儿子之间连边 然后就变成了询问树链的并 我们可以发现答案=sigma d ...

  6. 用groovy脚本进行每日工作的自动化【groovy】

    我们可以用groovy编写日常的批处理脚本,类似windows下的bat或者unix下的shell.其具体的编写方式非常简单,比如我们想要执行一个dir的命令,只要编写一个test.groovy,其中 ...

  7. JMeter命令行监控CPU和内存资源

    首先确定Agent启动成功 客户端

  8. Codeforces Gym100543L Outer space invaders 区间dp 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF-Gym100543L.html 题目传送门 - CF-Gym100543L 题意 $T$ 组数据. 有 $n ...

  9. 利用Flume将MySQL表数据准实时抽取到HDFS

    转自:http://blog.csdn.net/wzy0623/article/details/73650053 一.为什么要用到Flume 在以前搭建HAWQ数据仓库实验环境时,我使用Sqoop抽取 ...

  10. P1118 [USACO06FEB]数字三角形`Backward Digit Su`… 回溯法

    有这么一个游戏: 写出一个11至NN的排列a_iai​,然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少11,直到只剩下一个数字位置.下面是一 ...