IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python_文件处理 -> 正文阅读

[Python知识库]Python_文件处理

1.常用的两种打开文件的方法(以d盘目录下x.txt文件为例)

#方法1:通过需要.close()进行关闭
f = open(r'd:\x.txt','r')
f.close()

#方法2:直接用with打开文件
with open(r'd:\x.txt','r') as f:
    pass

2.常见的文件操作

(1)读写内容

#写入操作.write\.writelines
with open(r'x.txt','w') as f: #创建utf-8编码模式的系统文件
    f.write('the firstline')    #将中间内容写入文档
    f.writelines(['one\n','two\n','three\n']) #将字符串列表写入文档,系统不会自动换行,需要手动输入转义字符

#读取操作.read\.readline\.readlines
with open(r'x.txt','r') as f:
    print(f.read())    #空格中可以填写需要读取的字符,若为空,则默认读取全部文件

#readline的具体用法-读取一行内容,并作为结果返回
with open(r'x.txt','r') as f:
    while True:
        fragment = f.readline()
        if not fragment:
            break
        print(fragment,end = '')

#readlines列表的遍历-读取所有内容,并返回一个列表,每一行为一个元素
with open(r'x.txt','r') as f:
    list = f.readlines()
for line in list:
    print(line,end = '')

#二进制文件的读取和写入
with open(r'day1\sdf.png','rb') as f:
    with open(r'day1\sdf_copy.png','wb') as g:
        for line in f.readlines():
            g.write(line)

(2)读取文件对象的属性

with open('x.txt','r') as f:
    print(f.name)   #返回文件名称
    print(f.mode)   #返回文件打开模式
    print(f.closed) #返回文件是否关闭

?

(3)指针操作

#指针操作
with open('x.txt','r') as f:
    print(f.tell()) #返回指针位置
    f.seek(3)       #讲指针位置移动到第三个字节,前面的数为正则正向,为负则反向。后面的数不填默认为0,即从头开始,1从此处开始,2为从末尾。
    print(f.tell())
    print(f.readline(),end = '')    #从指针位置开始,读取一行内容
    print(f.tell())

(4)enumerate()函数的应用(操作每行增加行号)

#enumerate()函数的应用(操作每行增加行号)
with open('x.txt','r') as f:
    lines = f.readlines()
    list = [line.rstrip()+'#'+str(index+1)+'\n' for index,line in enumerate(lines)]  #推导式生成列表,enumerate生成的是索引+元素构成元组作为元素的列表
with open('x.txt','w') as f:
    f.writelines(list)

(5)pickle序列化

#pickle序列化
import pickle
a1 = [1,2,3,4,5]
a2 = (3,5,1)
a3 = 'asdqweqwe'
#序列化:
with open('x.dat','wb') as f:    #按顺序序列化
    pickle.dump(a1,f);pickle.dump(a2,f);pickle.dump(a3,f)
with open('x.dat','rb') as f:    #按序列化的顺序反序列化
    b1 = pickle.load(f);b2 = pickle.load(f);b3 = pickle.load(f)
print(b1);print(b2);print(b3)

(6)csv文件的读取和写入

#csv文件的写入和读取
import csv
headline = ['name','age','salary']
rows = [['Kryser',18,50000],['Lily',16,2000]]
with open('dd.csv','w') as f:
    a_csv = csv.writer(f)       #启用写入器
    a_csv.writerow(headline)    #写入一行
    a_csv.writerows(rows)       #写入多行,每行为列表的一个元素

with open('dd.csv','r') as f:
    b_csv = csv.reader(f)       #启用阅读器
    for line in b_csv:          #需要通过遍历打印
        if line == []:
            pass
        else:
            print(line)

?

3.os模块应用

(1)使用walk遍历工作目录下所有文件和目录的绝对路径

import os
all_file = []
path = os.getcwd()
lists = os.walk(path)
for dirpath, dirnames, filesname in lists:
    for dir in dirnames:
        all_file.append(os.path.join(dirpath,dir))  #目录的绝对路径
    for file in filesname:
        all_file.append(os.path.join(dirpath,file)) #文件的绝对路径

for f in all_file:  #遍历当前工作目录下的所有文件及目录的绝对路径形成的路径
    print(f)

(2)返回工作目录下的所有指定类型的文件名(以.py文件为例)

import os.path
path = os.getcwd()
list = os.listdir(path)
#method1
for file in list:
    if file.endswith('py'):
        print(file)
#method2
listc = [file for file in list if file.endswith('py')]  #推导式生成列表
for f in listc:
    print(f)

(3)遍历目录树

#遍历目录树
import os.path
all_files = []
def getAllFiles(path,level):     #此函数旨在实现输出一个包含path下的所有子文件与子目录的绝对路径的列表,以及实现缩进
    childFiles = os.listdir(path)
    for file in childFiles:
        filePath = os.path.join(path,file)
        if os.path.isdir(filePath):
            getAllFiles(filePath,level+1)
        all_files.append(level*'\t'+filePath)
a = getAllFiles('day1',0)        #调用函数
for f in reversed(all_files):    #逆序遍历该列表
    print(f)

(4)常用os模块

#常见的os方法:
import os
#1.os模块下系统读取的方法:
print(os.name)      #windows返回nt,Linux返回posix
#2.os模块下常用操作文件的方法:
os.remove(r'day1\damn\33.mp4')  #删除指定文件
os.rename('dd.csv','xx.csv')    #重命名指定文件
print(os.stat(r'day1\x.txt'))         #返回指定文件的所有属性(信息)
#3.os模块下关于目录操作的相关方法:
print(os.listdir('day1'))               #返回一个列表,列表内容为制定目录下的一级子目录以及子文件
os.mkdir('新增目录')                        #创建一个新目录,若没有写路径,则默认路径为工作目录下
os.rmdir('新增目录')                        #删除指定目录
os.makedirs('澳大利亚\悉尼\悉尼大学')         #创建多级目录
os.removedirs('澳大利亚\悉尼\悉尼大学')       #删除多级目录
os.getcwd()                             #获取当前工作路径
os.chdir('d:')                          #改变工作路径到指定位置
print(os.sep)                           #返回当前操作系统所使用的分隔符
print(repr(os.linesep))                 #返回当前操作系统所使用的换行符
#os.path模块
import os.path      #或者from os import path
#1.判断
print(os.path.isabs(r'd:\x.txt'))       #判断是否为绝对路径
print(os.path.isdir('day1\澳大利亚'))       #判断是否为目录(文件夹)
print(os.path.isfile(r'day1\x.txt'))    #判断是否为文件
print(os.path.exists(r'd:\x.txt'))      #判断路径是否存在
#2.返回
print(os.path.getsize('x.txt'))   #获取文件大小
print(os.path.abspath(r'd:\x.txt'))     #获取文件的绝对路径
print(os.path.dirname(r'd:\x.txt'))     #获取该文件的目录名称
print(os.path.getatime(r'd:\x.txt'))    #获取最后一次访问时间
print(os.path.getmtime(r'd:\x.txt'))    #获取最后一次修改时间
print(os.path.getctime(r'd:\x.txt'))    #获取文件的创建时间
#3.切分或连接路径
print(os.path.join('a','b','c'))        #把join里的字符用分隔符\连接起来
print(os.path.split(r'd:\x.txt'))       #对路径进行分割,以元组形式返回(已经分割的目录路径+文件名)
print(os.path.splitext(r'd:\x.txt'))    #同上,不过元组内容为已经分割的文件路径+后缀

4.shutil模块、zipfile模块

#shutil、zipfile模块
import shutil
#1.拷贝
shutil.copyfile('x.txt','x_copy.txt')       #拷贝单个文件
shutil.copytree('day1\澳大利亚','day1\城市')  #把一个目录拷贝到新建的目录
shutil.copytree('day1\澳大利亚','day1\metro',ignore = shutil.ignore_patterns('*.txt')) #功能同上,但是忽略掉指定类型的文件
#2.压缩
#shutil模块
shutil.make_archive('city','zip','day1')    #将day1目录下的所有文件,以zip格式,压缩至当前工作目录下新创建的city文件中
#zipfile模块
#(1)压缩
import zipfile
z1 = zipfile.ZipFile('a.zip','w')           #创建压缩文件a,格式为zip
z1.write('x.txt')                           #将x.txt写入压缩文件a中
z1.close()
#(2)解压缩
z2 = zipfile.ZipFile('a.zip','r')           #创建并打开压缩文件a,采用读模式
z2.extractall('new')                        #将a压缩文件中所有的压缩内容解压,并存入名为new的文件中
z2.close()

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-13 11:24:31  更:2021-10-13 11:25:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:22:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码