python文件操作

在python中,使用内置函数open()进行文件的操作,open()里面有三个参数,分别是文件路径,访问模式(读/写),编码格式

在此之前我们先来了解一下电脑的文件路径

绝对路径:

什么是绝对路径呢,就是我们在电脑中查找文件时通过层级关系(也就是通过固定的路径一层一层的查找),最后找到了这个文件的位置,简言之就是查找文件的路径是固定的,你通过这个路径是一定能找到的你想要的文件的(当然前提是你电脑中得有啊),下面给大家演示一下从电脑磁盘中找我在pycharm中创建的python文件操作的过程:

我是把文件建在了D盘,一般为了电脑能正常使用,我们都把文件放在C盘之外的磁盘中,先点击D盘:

python文件操作_第1张图片

进去D盘后找到所在的文件夹(铁子们在下载文件的时候一定要记得放在哪里了,不然用的时候找不到就麻烦了),这个是我在pycharm中创建的文件夹:

python文件操作_第2张图片

进去之后是这个,这个文件夹是我在pycharm中创建的项目:

点进去之后就出现了我们要找的python文件操作的文件

在磁盘中找文件的时候在磁盘上面是显示绝对路径的:

python文件操作_第3张图片

以上就是一个文件的绝对路径

相对路径

相对路径是指以当前文件资源所在的目录为参照基础,链接到目标文件资源(或文件夹)的路径。

通俗点说就是你进入一个文件,然后从这个文件的当前路径中去找另一个文件,这就是相对路径

从open这个文件中到达'读取文件'这个文件中就是相对路径,其绝对路径就是从python文件操作这个文文件夹中直接进入

绝对路径和相对路径各有优劣,没有谁更好之说,看使用者想怎么想的

普通文件

1.读取文件

read方法

r=read=读取的意思,read简写为r

mode='r'可以直接简写成'r'

python文件操作_第4张图片

从读取文件这个文件中读取遮天文件夹下面的day01.txt文件里面的内容

day01.txt文件里面需要自己输入内容

代码如下:

f = open('../遮天/day01.txt', mode='r', encoding='utf-8')
print(f.read())

'..'表示上一级目录,'.'表示当前目录

不会查看路径的可以参考以下方法:

python文件操作_第5张图片

右键点击想要查找路径的文件,然后鼠标悬浮在复制上面,后面会弹出要复制的内容,点击那个复制路径:

python文件操作_第6张图片

里面有绝对路径,相对路径要自己输入

如果绝对路径被识别为橙色后,为转移字符,只需要在引号前面加个'r'就可以了

f = open(r'D:\PycharmProjects\firstproject\遮天\day01.txt', mode='r', encoding='utf-8')
print(f.read())

2.写入文件:

2.1write方法

w=write=写入的意思,w是write的简写

f = open(r'D:\PycharmProjects\firstproject\遮天\day01.txt','w', encoding='utf-8')
f.write('这是写入的内容')

需要注意,在写入文件的时候如果文件不存在会创建一个新的文件,如果文件存在则会覆盖原有文件里面的内容,且只能写入一条内容

2.2writelines函数:
f = open(r'D:\PycharmProjects\firstproject\遮天\day01.txt','w', encoding='utf-8')
f.writelines(["\n这个函数可以写入多行内容", "\n要使用到换行符", "\n并且要用列表包裹"])

这个函数可以写入多条内容,但要注意:

1、必须使用列表包裹这些内容

2、如果为了更好的排版,可以使用"\n"换行符

2.3追加方法:

这里的追加是写入的追加,不会覆盖原有内容

f = open(r'D:\PycharmProjects\firstproject\遮天\day01.txt','w', encoding='utf-8')
f.writelines(["这个函数可以写入多行内容", "\n要使用到换行符", "\n并且要用列表包裹"])

f = open(r'D:\PycharmProjects\firstproject\遮天\day01.txt', 'a', encoding='utf-8')
f.write("\n这是追加的第一行内容和")

追加用的参数是'a',相当于append,writelines函数也可以用追加的方法

魔法方法读取与写入并行

'w+'方法

使用w+方法会默认先执行w方法(也就是写入的方法),如果没有写入的语句且文件里面有内容,则默认为空(也就是用了w+方法之后你如果没使用w方法,则文件内容为空),下面一段代码帮助大家理解

python文件操作_第7张图片

从这里我们可以看到文件里面是有内容的

f = open(r'D:\PycharmProjects\firstproject\遮天\day01.txt', 'w+', encoding='utf-8')
print(f.read())

输入上面代码然后运行,那个day01.txt文件里面就没内容了

先w后r

这次我们写运用w方法,然后再运用r方法

f = open(r'D:\PycharmProjects\firstproject\遮天\day01.txt', 'w+', encoding='utf-8')
f.write('这是w+方法')
print(f.read())

结果就是输入了一行内容,但读取的时候出了问题,这是为什么呢?其实原因很简单,那就是运用w+方法后,光标会放到最后,但是呢,r方法只会读取光标之后的内容,因此就不会读取到里面的内容了,其解决方法也非常简单,那就是在写入之后使用seek()方法,将文件中的光标放到最前面,我用代码给大家演示一下:

f = open(r'D:\PycharmProjects\firstproject\遮天\day01.txt', 'w+', encoding='utf-8')
f.write('这是w+方法')
f.seek(0)
print(f.read())   #结果为 这是w+方法

seek(0)就是将光标放到前面的方法了,这样就有办法读取内容了

'r'+方法

这个方法可以像追加的方法一样,向文件里面写入内容,但不会覆盖,但要注意光标位置,这里的光标位置要在末尾

f = open(r'D:\PycharmProjects\firstproject\遮天\day01.txt', 'r+', encoding='utf-8')
f.seek(0, 2)
f.write('\n前不见古人')
f.seek(0)
print(f.read())

 f.seek(0,2)是把光标移动到末尾,然后再写入内容,这样是不会覆盖原有内容的

二进制文件

读取二进制文件

用参数'rb'方法

python文件操作_第8张图片

这是一个二进制图片,用下面的方法把她读取出来

f = open(r"D:\PycharmProjects\firstproject\遮天\R-C.jpg", "rb")
pic = f.read()
print(pic)

这里要注意几个点:

1、读取二进制文件不需要定义编码格式

2、读取后的二进制文件要用一个变量来接收

3、这里读取出来的是一窜二进制编码

python文件操作_第9张图片

写入二进制文件

用参数'wb'方法
f = open(r"D:\PycharmProjects\firstproject\遮天\R-C.jpg", "rb")
pic = f.read()
print(pic)

f = open(r"D:\PycharmProjects\firstproject\遮天\R-C1.jpg", "wb")
f.write(pic)

读取二进制的时候需要用变量接收就是为写入服务的,写入二进制文件的时候需要用到那个读取时候的变量,第六行代码里面的pic就是读取时候的pic变量,记得要把文件名改一下

python文件操作_第10张图片

python文件操作_第11张图片

这里可以看到写入的图片和之前的图片是一模一样的

还有最关键的一点铁子们要注意,如果你想覆盖文件的时候报错了,那就是你文件打开之后就没关闭,所以才没覆盖成功,关闭方法就是用接收打开文件的变量加个close()也就是f.close()

最后再补充几个知识点:

flush()刷新当前文件位置,当文件读取有延迟时,可以使用这个方法刷新一下

tell打印当前文件内光标所在位置,这个方法是当你找不到光标位置是可以

最后呢也是感谢大家的支持

你可能感兴趣的:(python,python,开发语言)