python文件操作与模块-7

本文介绍了Python中的文件操作,包括文件的打开、读写和定位读取,以及模块和目录操作。详细讲解了open()函数的参数,读写文件的各种方法如read(), write(), readline(), readlines()等。此外,还探讨了os模块的功能,如系统操作、目录的增删改查,以及判断文件的相关方法。" 123437441,10814187,Java基础语法详解:类型转换与运算符,"['Java', '开发语言', '基础语法']
摘要由CSDN通过智能技术生成

1. 文件操作

  • 常见文件类型
    • txt
    • csv
    • json
    • html
    • mp4
  • 文件操作的流程
    • 打开–>open()
    • 读写–>read()/write()
    • 关闭–>close()
序号用途方法功能
1打开/关闭f=open(file)打开文件
2close()关闭文件
3读写文件内容f.read([size])从文件中读取指定的字节数:若未指定,读取所有
4f.readline([size])读取整行,包括"\n"
5f.readlines([size])读取所有行,并返回列表
6f.write(str)将字符串写入文件,并返回字符串长度
7f.writelines(str)向文件中写入一个序列字符串列表。如果需要换行,需要自己加入换行符
8f.flush()刷新文件缓冲,直接把内部缓冲的数据写入文件
9文件定位f.seek(offset)设置文件的当前位置,即指针位置
10f.tell()返回文件的当前位置,即指针位置

1.1文件的打开与关闭

内置函数:open(),创建一个file对象,之后才可以用它调用相关的方法。

格式:

file_object=open(file,[,mode],[,encoding="utf-8"],[,buffering])

解释

  • file_object --> open()返回文件对象
  • file --> 要打开的文件
  • mode --> 指定模式:只读,写入,追加等等。表。一般默认为只读。
  • encoding --> 指定文件编码,usually,“utf-8”/“GBK”
  • buffering --> 若设置为0,不会寄存;设为1访问文件时会寄存行;设为大于1的数,表明是寄存区的缓冲大小;设为负数,则寄存区的缓存区大小为系统默认。
#与py文件在同一目录
f=open('./date/GreenFlowerPorcelain.txt','r')
f.read()
print(f.name)
print(f.mode)
print(f.closed)
f.close()
print(f.closed)

文件对象的属性

属性描述
f.name返回文件的名称
f.mode返回文件的访问模式
f.closed如果文件已经关闭,返回True;否则False

mode表

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

关闭

f.close()

可以节约内存资源

1.2读写

  • f.read([size])
    • 每次读取都在当前指针停留处
    • 传递size,指定读取字节数
  • readline()
  • readlines()

  • write()
  • writelines()

1.3定位读取

f.tell()

  • 获取文件当前指针位置

f.seek()

  • seek(offset[,from])
    • offset,要移动的字数
    • from,位置
      • 0 从头开始偏移
      • 1 从当前位置
      • 2 从末尾

2.模块(module)及目录操作

开发过程中,程序代码会越来越多,如果直接放在一个文件里,代码会越来越长。–>代码不易维护

为了编写方便维护的代码,可以吧不同功能的代码分组,保存在不同的文件里。这样每个文件包含的代码量就会比较少,方便维护

在python中,一个.py文件就可以称为一个模块

即:

  • 包含相应功能的函数以及变量,py则以’’.py’'为后缀名
  • 模块可以为其他程序引用,以使用该模块所对应的函数或者变量

使用的模块的优点:

  • 提高代码的可维护性
  • 提高代码的复用性
  • 可以导入很多功能的模块
    • 标准库模块
    • 第三方模块
    • 自定义模块
  • 避免变量名重复

python中导入模块的常用方式:

import 模块名称

import 模块名称 as 新名称

from 模块名称 import 函数名

区别

  • import模块名称 和import模块名称as新名称
    • 会导入整个模块
    • 如果我们需要使用某个函数,必须”模块名称.函数名()"的形式来调用相应的函数(这种方法更利于代码可读性(优先推荐))
    • import 模块名称 as 新名称,重新命名导入的模块,通常使用名称简洁,方便使用。
  • from 模块名称 import 函数名
    • 只导入了某一函数,而不是一整个模块
    • 可以直接函数名称去调用函数,而无需在函数名称前面加模块名称
    • 如果我们的程序语句很多,不建议采用此种方法(原因:调用很多模块后,可能造成函数名重名,引发错误)
import random
random.random()

from random import  *
random()

注意

import语句的对应模块顺序(PEP) 程序最上方

  • python标准模块
  • 第三方
  • 自定义模块

os模块

Operator System

os模块是python标准库中用于访问操作系统功能的模块。

使用OS模块提供的接口,能实现跨平台访问。

最常见的操作

  • 目录的操作
  • 判断

1.系统操作

  • os.sep:用于查看系统路径的分隔符;
    • Windows–>’\\’
    • ubuntu–>’/’
  • os.name:先视我们正在使用的平台
    • Windows–>‘nt’
    • Linux/Unix–>‘posix’
  • os.getenv()–>读取环境变量
  • os.getcwd()–>获取当前路径

2.目录操作–增删改查(direction)

  • os.listdir()返回指定目录下的所有文件和目录名

    import os
    print(os.listdir('F:\python\程序\date'))
    print(os.listdir())
    #['GreenFlowerPorcelain.txt', 'one.docx', 'one.txt', 'two.txt']
    #['.idea', 'c_f.py', 'c_z.py', 'date']
    #不指定路径返回当前文件所在路径下的所有文件
    
  • 目录创建

    • os.mkdir(path) : 创建目录,但仅创建一级目录
    • os.makedirs(path) : 创建目录,可创建多级目录
os.mkdir('a')
os.makedirs('F:\python\程序/a1')
  • 目录文件删除
    • os.rmdir(path) : 删除目录,但仅删除一级目录
    • os.removedirs(path) : 删除目录,可删除多级目录
    • os.remove(path) : 删除文件,必须是文件
os.rmdir('date')
os.removedirs('F:\python\程序\date')
#[WinError 145] 目录不是空的。
  • 更改路径

    • chdir(path): 将当前目录更改到指定目录
    import os
    print(os.getcwd())
    os.chdir('..')
    print(os.getcwd())
    #F:\python\程序
    #F:\python
    #..表示上一级
    
    • os.rename(old_name,new_name)

3.判断文件

  • os.path.exists(path):判断文件是否存在
print(os.path.exists('date'))
#True
  • os.path.isfile(path):判断是否为文件
  • os.path.isdir(path):判断是否为目录

4. 拓展

  • os.path.getsize(name) 返回文件大小
  • os.path.dirname(path)返回文件路径
  • os.path.basename(path)返回文件名称
  • os.path.abspath(name)返回文件的绝对路径
  • os.path.join(path,name):连接目录和文件名
  • os.path.split(path):将目录和文件名分隔开,并返回元组
print(os.path.getsize('one.txt'))
#6154
print(os.path.dirname('F:\python\程序\date\one.txt'))
#F:\python\程序\date
print(os.path.basename('F:\python\程序\date\one.txt'))
#one.txt
print(os.path.abspath('one.txt'))
#F:\python\程序\one.txt
print(os.path.join('F:\python\程序\date','one.txt'))
#F:\python\程序\date\one.txt
print(os.path.split('F:\python\程序\date\one.txt'))
#('F:\\python\\程序\\date', 'one.txt')
  • 查看文件的时间
    • os.path.getmtime(path) 返回文件或目录的最后修改时间,结果为秒数
    • os.path.getatime(path) 返回文件或目录的最后访问时间,结果为秒数
    • os.path.getctime(path) 返回文件或目录的创建时间,结果为秒数
import  time
a=os.path.getmtime('one.txt')
print(time.strftime('%Y-%m-%d-%X',time.localtime(a)))
print(time.strftime('%Y-%m-%d-%X',time.localtime(os.path.getatime('one.txt'))))
print(time.strftime('%Y-%m-%d-%X',time.localtime(os.path.getctime('one.txt'))))
'''
2019-07-22-11:02:58
2019-07-22-17:08:58
2019-07-22-17:08:17
'''
  • 获取文件和目录
import os
#.代表从当前文件夹开始  ..带表从上级文件夹开始
path=os.walk('..')
for i in path:
    print(i)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值