一、什么是文件

等等这些都叫做文件,各种格式的。但不仅仅限制于这些。

二、文件的作用

大家应该听说过一句话:“好记性不如烂笔头”。

不仅人的大脑会遗忘事情,计算机也会如此,比如一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把这些数据存放起来,相比重启电脑之后,“哭都没地方哭了”,可见,在把数据存储起来有做么大的价值。

使用文件的目的:就是把一些存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力

三、文件的打开与关闭

想一想:如果想用word编写一份简历,应该有哪些流程呢?

  1. 打开word软件,新建一个word文件
  2. 写入个人简历信息
  3. 保存文件
  4. 关闭word软件

同样,在操作文件的整体过程与使用word编写一份简历的过程是很相似的

  1. 打开文件,或者新建立一个文件
  2. 读/写数据
  3. 关闭文件

在python,使用open()函数,可以打开一个已经存在的文件,或者创建一个新文件:

open(文件名,访问模式)

f = open("testFile.txt","w")
访问模式 说明
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

关闭文件使用close()

#创建或打开一个文件
f = open("testFile.txt","w")
#关闭文件
f.close()

四、文件的读写

1、写数据write()

#创建或打开一个文件
f = open("testFile.txt","w")
#往文件中写入数据
f.write("Hello I am Se7eN_HOU")
#关闭文件
f.close()

说明:如果仅仅写open()函数是不会创建文件的,要往里面写入数据,文件才会出现

注意:如果文件不存在那么创建,如果存在那么就先清空,然后写入数据

2、读取数据read()

使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据

#创建或打开一个文件
f = open("testFile.txt","r") #读取前五个字节的数据
content1 = f.read(5)
#读取全部数据
content2 = f.read() print(content1)
print(content2) #关闭文件
f.close()

运行结果为:

Hello
I am Se7eN_HOU
  • 如果open是打开一个文件,那么可以不用写打开的模式,即只写open(“testFile.txt”)
  • 如果使用读了多次,那么后面读取的数据是从上次读完后的位置开始的

3、读数据readlines()

就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

目前testFile.txt里面有四行内容,代码读取如下:

f = open("testFile.txt")

content = f.readlines()
print(type(content)) i=1
for temp in content:
print("%d:%s"%(i,temp)) #关闭文件
f.close()

运行结果为:

<class 'list'>
1:Hello I am Se7eN_HOU1 1:Hello I am Se7eN_HOU2 1:Hello I am Se7eN_HOU3 1:Hello I am Se7eN_HOU4

4、读数据readline()

按行读取,一次读取一行数据

f = open("testFile.txt")

content = f.readline()
print("1:%s"%content) content = f.readline()
print("2:%s"%content) content = f.readline()
print("3:%s"%content) content = f.readline()
print("4:%s"%content) f.close()

运行结果为:

1:Hello I am Se7eN_HOU1
2:Hello I am Se7eN_HOU2
3:Hello I am Se7eN_HOU3
4:Hello I am Se7eN_HOU4

五、文件的定位

1、获取当前读写的位置

f = open("testFile.txt")
str = f.read(3)
print("读取的数据是%s"%str) #获取当前文件读取的位置
position = f.tell()
print("当前文件的位置%s"%position) #再往后接着读取7个数据
str = f.read(7)
print("读取的数据是%s"%str) #再次获取当前文件读取的位置
position = f.tell()
print("当前文件的位置%s"%position) f.close()

运行结果为:

读取的数据是Hel
当前文件的位置3
读取的数据是lo I am
当前文件的位置10

2、定位到某个位置

如果在读写文件的过程中,需要从另外一个位置进行操作的话,可以使用seek()

seek(offset, from)有2个参数

  • offset:偏移量
  • from:方向
    • 0:表示文件开头
    • 1:表示当前位置
    • 2:表示文件末尾

例如:把位置设置为:从文件开头,偏移5个字节

f = open("testFile.txt")
str = f.read(20)
print("读取的数据是%s"%str) #获取当前文件读取的位置
position = f.tell()
print("当前文件的位置%s"%position) #重新设置位置
f.seek(5,0) #重新获取当前文件读取的位置
position = f.tell()
print("当前文件的位置%s"%position) f.close()

运行结果为:

读取的数据是Hello I am Se7eN_HOU
当前文件的位置20
当前文件的位置5

六、文件的重命名

有些时候,需要对文件进行重命名、删除等一些操作,python的os模块中都有这么功能

语法格式: rename(需要修改的文件名, 新的文件名) 

import os
os.rename("testFile.txt","TestFile.txt")

七、删除文件

remove(待删除的文件名)

import os
os.remove("TestFile.txt")

八、文件夹的相关操作

实际开发中,有时需要用程序的方式对文件夹进行一定的操作,比如创建、删除等

就像对文件操作需要os模块一样,如果要操作文件夹,同样需要os模块

1、创建文件夹

import os
#在C盘下创建一个Se7eN_HOU的文件夹
os.mkdir("C:\\Se7eN_HOU")

2、获取当前目录

import os
print(os.getcwd())

3、获取目录列表

import os
print(os.listdir("C:/"))

4、删除文件夹

import os
os.rmdir("C:/Se7eN_HOU")

python基础-文件操作(10)的更多相关文章

  1. python基础-文件操作

    一.文件操作 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r ,只读模式[默认模式,文件必须存在,不存在则抛出异 ...

  2. Python基础--文件操作和集合

    这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件file.txt: 我们哭了 ...

  3. python 基础文件操作

    实时刷新到硬盘里 f= open('hh','w',encoding='utf8') f.write('gyftyftft') f.write('hghgh\njkkjk') f.flush()#实时 ...

  4. Python基础—文件操作(Day8)

    一.文件操作参数 1.文件路径 1)绝对路径:从根目录开始一级一级查找直到找到文件. f=open('e:\文件操作笔记.txt',encoding='utf-8',mode='r') content ...

  5. Python 基础 文件操作

    字符串与字节之间的转换 # utf-8 一个汉字 占三个字节 # gbk 一个汉字 占两个字节 # 字符串转换成字节 print(bytes('汉字', encoding='utf-8'))print ...

  6. python基础--文件操作实现全文或单行替换

    python修改文件时,使用w模式会将原本的文件清空/覆盖.可以先用读(r)的方式打开,写到内存中,然后再用写(w)的方式打开. 替换文本中的taste 为 tasting Yesterday whe ...

  7. Python基础————文件操作

    文件操作 4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') # 表示要干嘛 读 还是写 obj.write() #写什么内容 obj.read() ...

  8. 第3章 Python基础-文件操作&函数 文件操作 练习题

    一.利用b模式,编写一个cp工具,要求如下: 1. 既可以拷贝文本又可以拷贝视频,图片等文件 2. 用户一旦参数错误,打印命令的正确使用方法,如usage: cp source_file target ...

  9. Python基础——文件操作

    写文件 writefile %%writefile ./data/testFile.txt hello python jin tian tian qi bu cuo open覆盖 txt=open(' ...

随机推荐

  1. eclipse Maven Dependencies 黑色背景说明

    记录工作点点滴滴,大到系统设计,源码分析,小到IDE设置. 这里要说的是eclipse中Maven Dependencies 为什么有些jar用黑色背景,如下图所示: 网上很多人说jar包在本地仓库不 ...

  2. Python:每日一题008

    题目: 判断101-200之间有多少个素数,并输出所有素数. 程序分析: 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 个人思路及代码: li ...

  3. 1179: 零起点学算法86——小明A+B(未弄懂)

    1179: 零起点学算法86——小明A+B Time Limit: 1 Sec  Memory Limit: 32 MB   64bit IO Format: %lldSubmitted: 2540  ...

  4. [原创]networkx 画中文节点

    一直想分享一些自己遇到的坑,但确实很多时候走的太快 很多想做的事情会被快节奏的生活冲淡, 在公司做事反而比学校还自在, 因为是悠闲的实习期... 几点小建议写在前头--xdj: 遇到问题,大多数人首先 ...

  5. 数据库基础 RDBMS、NoSQL

  6. Appium系列文章(1)获取appPackage和appActivity

    appPackage和appActivity 进行appium自动化测试非常重要的两个参数,我们所测试的APP不同,这两个参数肯定也是不一样的.那如何快速的获取这APP的这两个参数呢? 通过cmd命令 ...

  7. How to setup Visual Studio without pain

    Visual Studio (VS) can be very hard to install. If you are lucky, one whole day may be enough to ins ...

  8. Ubuntu14.04下中文输入法拼音不正常问题 输入nihao会变成niha o

    1. 打开输入法首选项,选择拼音模式,选择全拼 2. 在终端中输入ibus-daemon –drx

  9. JQuery 操作数组 each、map、grep、filter

    Jquery中对数组的操作大致有一下几种形式:1.$.each( collection, callback(indexInArray, valueOfElement) )$.each()函数和$(se ...

  10. STM32学习笔记

    1.32位即表示32个二进制位(0/1)即32根线,每根线可以表示0/1两种状态,所以可以表示2^32=4GB的大小,CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖 ...