第08章:python自动化——文件操作

目录

一、open函数应用

二、文件操作模式

1.读取文件内容

2.读取特定内容的方式

 3.文件写入操作

 4.文件追加操作

5. 图片的复制操作

三、with open语法应用

四、文件路径的读取机制


一、open函数应用

在python中,会经常使用到文件,来实现数据的获取,以便于我们进行更多行为操作。
在常规操作文件的时候,主要使用的函数是open()。
这个也是最常用的python中文件操作函数。

文件操作示例:
    1. 基本的读取文件内容一定是用open()函数来实现
    2. 读取文件,一定是要将文件的路径和文件名全部都明确指定。
    3. 相对路径和绝对路径:一般操作文件的时候都会尽可能使用相对路径
        相对路径:文件在工程之中,随着工程一起打包的,所以在读取的时候,基于工程本身的路径结构来获取文件。
        绝对路径:从物理存放的路径下进行文件的获取。例如:C:\program files\1.txt
        相对路径的获取形态比较类似于linux的文件操作

下面就是文件的打开操作:
file = open(file='./file/hcc2.txt', mode='a', encoding='UTF-8')

其中:
file='./file/hcc2.txt'这个设置,是设置打开的文件路径,如果在mode为w或者a的情况下,此路径下不存在此文件,则会自动创建一个文件

mode='a'这个设置,mode指的是对文件的操作权限:
    1. 读:r
    2. 写:w
    3. 追加:a,如果文件不存在,则新建一个文件,然后执行写入操作。
    4. 二进制:b,用于操作非文本文件,一般用于图片的操作

encoding='UTF-8'这个设置,encoding指的是设置文件的编码格式,utf-8是文本中有中文的情况下需要设置的格式。

二、文件操作模式

1.读取文件内容

# 基本的文件获取操作:基于相对路径,如果文件中涉及到中文的相关信息,需要调用utf-8的编码模式
file = open(file='./file/hzp.txt', mode='r', encoding='UTF-8')

# 读取文件内的所有内容。但是读取所有内容的形式并不符合实际情况,因为文件可能很大。
print(file.read())

# 这个时候需要,获取文件中的内容,将每一行的信息保存为一个元素,最终形成一个list输出
print(file.readlines())     #输出的内容中的\n表示换行

# 可以一行一行的读取,用file.readline(),如果文件内容读完了,后面读出为空
print(file.readline())

2.读取特定内容的方式

for line in file.readlines():
    # print(line)
    if '你好' in line:
        string = line
        print(string)
        break

 3.文件写入操作

注意在,mode='w'的时候,文件内容是以覆盖的形式写入。在写入操作的最后,一定要记得将文件给关闭掉。

file = open(file='./file/hzp.txt', mode='w', encoding='UTF-8')

# 文件的写入操作:覆盖原有的内容,重新进行写入
file.write('这是新写入的内容,请好好的保存')

# 在文件操作结束之后,一定记得关闭文件流,释放资源,避免出现问题。
file.close()

 4.文件追加操作

file = open(file='./file/hzp.txt', mode='a', encoding='UTF-8')

# 文件的写入操作:覆盖原有的内容,重新进行写入.\n是先换行,再追加写入
file.write('\n这是追加的内容')

# 在文件操作结束之后,一定记得关闭文件流,释放资源,避免出现问题。
file.close()

5. 图片的复制操作

 注意第一个file的路径的写法,这个r是为了避免路劲中出现关键字影响代码正常运行。r可以原汤化原食。file是绝对路径,file1是相对路径。

# 图片的复制操作
# 打开原图片
file = open(file=r'D:\pic.png', mode='rb')
# 创建复制文件:复制文件本身不存在,需要创建新的文件。
file1 = open(file='./file/pic_copy1.png', mode='wb')

# 执行复制操作
# 1. 原图片的内容获取
content = file.read()
# 2. 将图片的内容写入到复制的文件之中
file1.write(content)

file.close()
file1.close()

三、with open语法应用

常规情况下,我们的操作需要先open,再进行各类文件操作行为,然后对文件进行关闭处理。
为了以防止忘记close,所以可以通过python提供的固定语法结构with open的形态,来进行文件操作。这种语法会在操作结束后,自动进行close处理。

with open(file='../file/hzp.txt', mode='r', encoding='utf-8') as file:
    for line in file.readlines():
    print(line)

四、文件路径的读取机制

python中,操作文件,是通过文件路径来进行文件的获取的。
但是,在获取文件路径的时候,是基于被运行的py文件所在路径来进行获取的。

如果将上面的代码,进行封装

def read_file():
    # 这种路径的写法是不推荐的,因为过于死板,没有办法在其他的路径下应用。初期还是建议做参数的形态来处理。
    with open(file='../file/hzp.txt', mode='r', encoding='utf-8') as file:
        for line in file.readlines():
            print(line)

然后在其他的文件里面去调用read_file()可能会报错,因为在新的文件夹运行这个类的调用时,原先的路径以现在的位置为起点,可能是不存在的

如何解决这个路径问题呢?

答:可以将文件路径作为一个参数的形态来进行传递,就可以避免因为路径错误导致的文件操作失误。将file的路径改为变量path,然后在其他地方调用这个函数的时候,可以这样去写

write_file('../file/hzp.txt')

def write_file(path):
    with open(file=path, mode='w', encoding='utf-8') as file:
        for line in file.readlines():
            print(line)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值