Python基础8

文件操作(io技术)

文本文件和二进制文件

1.(文本文件)默认使用unicode字符集,即可以用记事本程序打开的。

2.(二进制文件)无法用记事本打开的,必须用专用软件解码的

创建文件对象open()

1.r 读read模式

2.w 写write模式,如果文件存在则删除原文件内容,没有就增加

3.a 追加模式

4.b 二进制模式

5.+ 读,写模式

文件写入

步骤:1.创建文件对象

2.写入数据

3.关闭文件对象
4.write(),writelines()写入

writelines()写的是列表

close()关闭文件流

#测试写入中文
try:
    f=open(r"c.txt","a")
    s=["aa","bb","好"]
    f.writelines(s)
except BaseException as e:
    print(e)
finally:
    f.close()
### with语句(上下文管理器)
with open(r"a.txt","a") as f:
    f.write("gaoij")

文本文件的读取

1.read(【size】)

从文件读取size个字符,并返回。没有就读整个文件。读到文件末尾,会返回空字符

2.readline()

读取一行内容作为返回。读到文件末尾,会返回空字符

3.readlines()

文件文本中,每一行作为一个字符串存入列表,返回列表

#read([size])
with open("a.txt","r") as f:
    for a in f:
        print(a,end="")

_enumerate()函数和推到式生产列表

可以把索引和内容放同一个元组中


with open("a.txt","r") as f:
    lines=f.readlines()
    lines=[line.rstrip()+"@"+str(index+1)+"\n" for index,line in enumerate(lines)]

with open("a.txt","w") as f:
    f.writelines(lines)

二进制的读取和写入

f=open(r"d:\a.txt",‘wb’) 可写的,重写模式的二进制文件对象

f=open(r"d:\a.txt",‘ab’) 可写的,追加模式的二进制文件对象

f=open(r"d:\a.txt",‘rb’) 可读的二进制文件对象

with open("aa.gif","rb") as f:
    with open("aa_copy.gif","wb") as w:
        w.write(line)
print("图片拷贝完毕")

文件对象的常用属性和方法

属性:说明

flush 把缓冲区的内容写入文件,但不关闭文件

seek(offset【,whence】)把文件指针移动到新的位置,offset表示相对于whence的多少个字节的偏移量:

offset:

  off为正往结束方向移动,set为负往开始方向移动

whence不同值的含义:

0:从文件头开始计算(默认)

1:从当前位置开始计算

2:从文件尾开始计算

with open("e.txt","r") as f:
    print("文件名是:{0}".format(f.name))
    print(f.tell())
    print("读取的内容是:{0}".format(str(f.readline())))

    f.seek(5)
    print(f.tell())
    print("读取内容是:{0}".format(str(f.readline())))

使用pickle序列化

序列化:是把对象转化成“串行化”数据形式,存到硬盘或通过网络传到其他地方。

反序列是指相反的过程,将读取的“串行化数据”转化成对象。

import pickle
a1=235
a2="预约"
a3=[10,20,30]

with open("data.dat","wb") as f:
    pickle.dump(a1,f)
    pickle.dump(a2,f)
    pickle.dump(a3,f)

with open("data.dat","rb") as f:
    b1=pickle.load(f)
    b2=pickle.load(f)
    b3=pickle.load(f)
    print(b1)
    print(b2)
    print(b3)

csv文件的操作

csv的读取

import csv
with open(“dd.csv”,“r”) as f:
a_csv=csv.reader(f)
#print(list(a_csv))
for a in a_csv:
print(a)

CSV的写入
import csv
with open("dd.csv","r") as f:
    a_csv=csv.reader(f)
    #print(list(a_csv))
    for a in a_csv:
        print(a)

with open("ee.csv","w") as f:
    b_csv=csv.writer(f)
    b_csv.writerow(["ss","aa","打"])
    c=[["aa","bb","ss"],["uu","tt"]]
    b_csv.writerows(c)

os和os.path模块

os模块可以帮助我们直接对操作系统操作

os调用操作系统文件和命令

import os
#os.system(“notepad.exe”)
#os.system(“ping www.baidu.com”)
#os.system(“cmd”)

#直接调用可执行文件
os.startfile(r"C:\Program Files (x86)\Tencent\WeChat\WeChat.exe")

os模块——文件和目录操作

常用操作文件的方法:

1.remove(path)删除指定文件

2…rename(src,dest)重命名

3.stat(path)返回文件所有属性

4.listdir(path) 返回path目录下的文件和目录列表

关于目录操作的相关方法:

1.madir(path) 创建目录

2.makedirs(path1/path2…)创建多级目录

3.rmdir(path)删除目录

4.removedirs(path1/path2…)删除多级目录

5.getcwd()返回当前工作目录:current work dir

6.chdir(path) 把path设为当前目录

7.walk()遍历目录树

8.sep当前操作系统所使用的路径分隔符

import os
#####获取文件夹相关信息#######
print(os.name) #windows-->nt  linux和unix-->posim
print(os.sep)#windows-->| linux和unix-->/
print(repr(os.linesep))#windows-->'\r\n'  linux和unix-->'n'


#######关于工作目录的操作########
print(os.getcwd())
os.chdir("d:")#改变工作目录到d盘
os.mkdir("书籍")
os.rmdir("书籍")#相对路径都是相对当前的工作目录
########创建目录·创建多级目录·删除#########
os.makedirs("电影/港台/周星驰")
os.removedirs("电影/港台/周星驰")#只能删除空目录,目录有内容删不了

os.makedirs("../音乐、香港")#../指的是上一级目录
os.removedirs("../音乐、香港")

dirs=os.listdir("movie")
print(dirs)
实操一
#测试os,path中关于目录,路径的操作
import os
import os.path
#####判断:绝对路径,是否目录,是否文件,文件是否存在######
print(os.path.isabs("d:a.txt"))#判断是否绝对路径
print(os.path.isdir("d:a.txt"))#判断是否目录
print(os.path.isfile("d:a.txt"))#判断是否文件
print(os.path.exists("d:a.txt"))#指定路径的文件是否存在

#####获得文件基本信息######
print(os.path.getsize("b.txt"))#返回文件的大小
print(os.path.abspath("b.txt"))#返回绝对路径
print(os.path.dirname("b.txt"))#返回目录的路径


print(os.path.getctime("b.txt"))
print(os.path.getatime("b.txt"))#返回文件的最后访问时间
print(os.path.getmtime("b.txt"))#返回文件的最后修改时间
#####对路径的操作#####
path=os.path.abspath("b.txt")
print(os.path.split(path))#对路径分割,以列表形式返回
print(os.path.splitext(path))#从路径中分割文件的扩展名

print(os.path.join("aa","bb","cc"))#连接多个path
实操二

#列出指定目录下所有的.py文件,并输出文件名

import os
path=os.getcwd()

file_list=os.listdir(path)
for filename in file_list:
    if filename.endswith("py"):
        print(filename)

print("###########")
file_list2=[filename for filename in os.listdir(path) if filename.endswith("py")]
for f in file_list2:
    print(f,end="\t")
os模块 使用walk遍历
#测试os.walk()
import os

all_files=[]
path=os.getcwd()#返回进程的当前目录
list_files=os.walk(path)

for dirpath,dirname,filenames in list_files:
    for dir in dirname:
        all_files.append(os.path.join(dirpath,dir))
    for file in filenames:
        all_files.append(os.path.join(dirpath,file))
for file in all_files:
    print(file)
shutil模块(拷贝和压缩)
import shutil
shutil.copytree("电影","movie",ignore=shutil.ignore_patterns("*.txt"))
ziopfile模块  压缩和解压缩

#压缩,解压缩
import shutil

#shutil.make_archive(“movie/香港”,“zip”,“电影”)#把电影压缩进movie里面,压缩方法一
import zipfile

#z1=zipfile.ZipFile(“d:/a.zip”,“w”)
#z1.write(“01.py”)
#z1.write(“b.txt”)
#z1.close()

z2=zipfile.ZipFile(“d:/a.zip”,“r”)
z2.extractall(“电影”)
z2.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值