YS_20190731_Python_文件

文件

1.打开文件

open(file, mode='r', buffering=-1, encoding_=None, errors=None, newline=None, closefd=True, opener=None)
#eg:
# 创建一个变量,来保存文件的名字
# 如果目标文件和当前文件在同一级目录下,则直接使用文件名即可
file_name = 'demo.txt'
# 在windows系统使用路径时,可以使用/来代替 \
# 或者可以使用 \\ 来代替 \
# 或者也可以使用原始字符串  r
file_name = 'hello\\demo.txt'
# file_name = r'hello\demo.txt'
# 表示路径,可以使用..来返回一级目录
file_name = '../hello/demo.txt'
# 如果目标文件距离当前文件比较远,此时可以使用绝对路径
# 绝对路径应该从磁盘的根目录开始书写
#备注: .. 表示返回上一级目录
#在实际工作里面,要求写到同一个包内,方便管理

如何解决?
大学会利用DBUtils封装
企业会利用 C3p0 JNDI Database Mybatis
备注:利用以上操作,资源就不会泄露,服务器读取数据的速度快、性能高、安全!

2.关闭文件

close()

file_name = 'hello'
try:
    with open(file_name) as file_obj :
        print(file_obj.read())
except FileNotFoundError:#文件读取不到的时候,因此需要抛出异常,捕获异常,让程序更加安全。
    print(f'{file_name} 文件不存在~~')
except FileExistsError:
    print(f'{file_name}文件已存在')

在python里面避免频繁close的方法:
利用with …as:通过with…as操作可以在程序执行完成之后自动关闭IO操作。此时这个文件只能在with中使用,一旦with结束则文件会自动close()

3.读取文件

1.read () 来读取文件中的内容

file_name = 'demo2.txt'

try:
    #   处理文本文件时,必须要指定文件的编码,(如果导入文件中有中文,而没有设置文件编码格式,会出现乱码)
    with open(file_name,encoding='utf-8') as file_obj:
        #   通过 read() 来读取文件中的内容
        #   如果直接调用read()它会将文本文件的所有内容全部都读取出来
        #   如果要读取的文件较大的话,会一次性将文件的内容加载到内存中,容易导致内存泄漏
        #   所以对于较大的文件,不要直接调用read()
        # help(file_obj.read)
        # read()可以接收一个size作为参数,该参数用来指定要读取的字符的数量
        #   默认值为-1,它会读取文件中的所有字符
        #   可以为size指定一个值,这样read()会读取指定数量的字符,
        #   每一次读取都是从上次读取到位置开始读取的
        #   如果字符的数量小于size,则会读取剩余所有的
        #   如果已经读取到了文件的最后了,则会返回''空串
        # content = file_obj.read(-1)#读取全部内容
        content = file_obj.read(6)
        # print(content)
        # print(len(content))
except FileNotFoundError :
    print(f'{file_name} 这个文件不存在!')

# 读取大文件的方式
file_name = 'demo.txt'
try:
    with open(file_name,encoding='utf-8') as file_obj:
        # 定义一个变量,来保存文件的内容
        file_content = ''
        # 定义一个变量,来指定每次读取的大小
        chunk = 100
        # 创建一个循环来读取文件内容
        while True:
            # 读取chunk大小的内容
            content = file_obj.read(chunk)

            # 检查是否读取到了内容
            if not content:
                # 内容读取完毕,退出循环
                break
            # 输出内容
            # print(content,end='')
            file_content += content
except FileNotFoundError :
    print(f'{file_name} 这个文件不存在!')
print(file_content)

2.readline () 可以用来读取一行内容

print(file_obj.readline(),end='')
print(file_obj.readline())

3.readlines () 用于一行一行的读取内容,它会一次性将读取到的内容封装到一个列表中返回

    # r = file.readlines()
    # pprint.pprint(r[0])
    # pprint.pprint(r[1])
    # pprint.pprint(r[2])

4.for 循环

file_name = 'demo02'

with open(file_name , encoding='utf-8') as file_obj:

    for t in file_obj:
        print(t)

4.写入文件

write () 给指定文件写入内容,如果原文件有内容,则删除,如果原文件的内容和新写入的内容一致,则覆盖。
使用open()打开文件时必须要指定打开文件所要做的操作(读、写、追加)
如果不指定操作类型,则默认是 读取文件 , 而读取文件时是不能向文件中写入的
r 表示只读的
w 表示是可写的,使用w来写入文件时,如果文件不存在会创建文件,如果文件存在则会截断文件
截断文件指删除原来文件中的所有内容
a 表示追加内容,如果文件不存在会创建文件,如果文件存在则会向文件中追加内容
x 用来新建文件,如果文件不存在则创建,存在则报错
“+” 为操作符增加功能
r+ 即可读又可写,文件不存在会报错

# with open(file_name , 'w' , encoding='utf-8') as file_obj:
# with open(file_name , 'r+' , encoding='utf-8') as file_obj:
with open(file_name , 'x' , encoding='utf-8') as file_obj:
    # write()来向文件中写入内容,
    # 如果操作的是一个文本文件的话,则write()需要传递一个字符串作为参数
    # 该方法会可以分多次向文件中写入内容
    # 写入完成以后,该方法会返回写入的字符的个数
    file_obj.write('aaa\n')
    file_obj.write('bbb\n')
    file_obj.write('ccc\n')
    r = file_obj.write(str(123)+'123123\n')
    r = file_obj.write('今天天气真不错')
    print(r)

5.Numpy

什么是NumPY ?
1.一种基于科学计算和多维数组等操作的一个文件(函数)
思考:矩阵:---->多维数组、多维空间
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值