17、Python中的文件操作


1、文件操作

  • open()函数
  • fileinput操作文件

(1)、open()函数

使用open()函数打开文件,并使用相关的读/写文件的内容供程序处理和使用,而文件也可以看做Python中的一种数据类型。

open()函数原型如下:

  • open(file, mode=’r’, buffering=’-1’, encoding=None, errors=None, newline=None, closefd=True, opener=None)

open()函数参数说明如下:

filename要打开的文件名
mode可选参数,文件打开模式
bufsize可选参数,缓冲区大小
encoding文件编码类型
errors编码错误处理方法
newline控制通过换行符模式的行为
closefd控制在关闭文件时是否彻底关闭文件

mode是打开文件的操作模式字符串,常见的模式字符串如下:

模式字符表示的操作
r只读(r)
w只写,会清除文件内容
a附加数据
b二进制数据模式
x新建一个文件,可写
+打开文件直接更新
t文本模式(默认)

常用的文件操作及其作用描述如下:

文件操作功能描述
file.read([n])将整个文件读入字符串中,或指定n个字节
file.readline([n])读入文件的一行到字符串中
file.readlines()将整个文件按行读入到列表中
file.write(s)向文件中写入字符串
file.writelines(lines)向文件中写入一个行数据列表
file.close()关闭打开的文件

文件读写示例:
①使用for循环读写

file = open('G:\\work\\python\\ClassTest.py', encoding='utf-8')
for line in file.readlines():
    print(line, end='')
file.close()

②使用while循环读写

file = open('G:\\work\\python\\ClassTest.py', encoding='utf-8')
while True:
    line = file.readline()
    if not line:
        break;
    print(line, end='')
file.close()

③使用with语句读写

with file as f:
        for lines in f:
            print(lines, end='')

(2)、fileinput操作文件

fileinput模块提供了一个以行模式循环处理一个或多个文件内容;它实现了对文件中的行的懒惰迭代,读取时不需要把文件内容放入内存,这样提高程序效率;

fileinput模块常用的函数有:

  • input(): 返回用于迭代一个或多个文件中所有行对象;
  • filename(): 返回当前文件的名称;
  • lineno(): 返回当前读取行的数量;
  • isfirstline():返回当前行是否文件的第一行;
  • filelineno(): 返回当前读取行在文件的行数。

2、常用的文件和目录操作

(1)、获取当前路径

import os
os.getcwd()

(2)、获取目录中的内容

import os
os.listdir(path)

(3)、创建目录

import os
os.mkdir(path)

(4)、删除目录

import os
os.rmdir(path)

(5)、判断是否为目录或文件

import os
os.path.isdir(path)
ps.path.isfile(path)

(6)、遍历目录下的所有文件和目录

import os
os.walk(path)
for i in os.walk('.\\'):
    print(i)

os.walk()返回多个元组;第一项为遍历的目录名,第二项为遍历的子目录列表,第三项为遍历的所有文件列表

运行结果:
(‘G:\work\python’, [‘01Python爬虫基础’, ‘bao’, ‘pycache‘, ‘文章’], [‘ClassTest.py’, ‘compilePy.py’, ‘ExpectTest.py’, ‘Html.html’, ‘ItorTest.py’, ‘lambdaTest.py’, ‘MyPyModel.py’, ‘MyTestPy.py’, ‘MyTestPy.pyc’, ‘PrintTest.py’, ‘py10.py’, ‘PythonClassTest.py’, ‘PythonEmail.py’, ‘PythonImport.py’, ‘Test.py’, ‘Test20180222.py’])
(‘G:\work\python\01Python爬虫基础’, [], [‘baiduHtmlGet.py’, ‘BaiduIndex.html’, ‘BaiduSearchHtmlIndex.html’, ‘BaiduSearchIndex.py’, ‘postTest.py’, ‘PostTestIndex.html’, ‘qbHtmlIndex.html’, ‘qbHtmlIndexGet.py’, ‘配套资料下载地址.jpg’, ‘零基础快速入门Python网络爬虫.ppt’])
(‘G:\work\python\bao’, [‘pycache‘], [‘MyPyModel.py’, ‘init.py’])
(‘G:\work\python\bao\__pycache__’, [], [‘MyPyModel.cpython-36.pyc’, ‘init.cpython-36.pyc’])
(‘G:\work\python\__pycache__’, [], [‘ClassTest.cpython-36.pyc’, ‘MyPyModel.cpython-36.pyc’])
(‘G:\work\python\文章’, [], [‘Python进阶.md’, ‘包.md’, ‘异常.md’, ‘模块.md’, ‘生成器.md’, ‘迭代器.md’])

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值