Python学习笔记——week_6

第八章 读写文件

1. 文件路径

文件的路径在Windows系统中路径书写为倒斜杠(\),在osX和Linux系统上为正斜杠(/)。
(1)可以使用os模块中的path.join()函数来返回一个适合运行环境的路径, 如:
import os
os.path.join(‘Users’,‘asweigart’,‘Documents’,‘project.docx’)
(2)获取和改变当前工作目录

函数作用示例
os.getcwd()获得当前工作目录直接调用即可
os.chdir()改变当前工作目录os.chdir(‘C:\\Users\\asweigart\\Documents’)

ps.倒斜杠有两个,因为每一个倒斜杠需要一个另一个倒斜杠转义。

(3)相对路径和绝对路径
例如在有目录C:\Users\87124 ,且当前工作目录为C:\Users

绝对路径相对路径
C:\Users\87124.\87124
C:\..\
C:\Users.\

ps. 点(.)表示当前工作目录,点点(..)表示当前工作目录的上一级目录
(4)创建新目录
os.makedirs(‘C:\\Users\\asweigart\\Documents’)
这语句会直接创建路径C:\Users\asweigart\Documents,如果原来文件不存在此路径,这个函数就会在已有的路径之上添加缺失的部分。

(5)其他函数

函数作用
os.abspath(path)将相对路径path参数返回为一个绝对路径
os.path.isabs(path)判断一个path参数是否为绝对路径
os.path.relpath(path,start)返回一个从start路径到path路径的一个相对路径,start默认为当前工作路径
os.path.dirname(path)返回包含path参数中 最后一个斜杠之前的全部内容(路径)
os.path.basename(path)返回包含path参数中最后一个斜杠之后的全部内容(文件或文件夹)
os.path.split(path)返回一个分割最后一个斜杠前后的路径和文件的元组(两个字符串)
os.path.sep文件路径的分割字符’\\’
os.path.getsize(path)返回path参数中文件(夹)的字节数(不包括里面放的文件)
os.listdir(path)返回path参数下所有文件(夹)名字的一个字符串列表
os.path.exists(path)检查这个path参数是否存在
os.path.isfile(path)检查这个path参数是否为一个文件
os.path.isdir(path)检查这个path参数是否为一个文件夹

2. 读写文件

(1)打开文件
在对一个文件进行处理时,必须先要打开文件;使用open()函数,默认为只读模式打开文件(‘r’)。

 File = open('C:\\Users\\87124\\Desktop\\hello.txt')

(2)读取文件
调用read()函数读取文件内容:只返回一个字符串
在这里插入图片描述调用readlines()函数获取文件内容:返回按每行分割的列表
(3)写入文件
写模式:覆盖原有文件内容

添加模式:在已有文件内容后面添加新的文本

ps.如果文件不存在,则会创建一个新的文件

#写模式
File = open('C:\\Users\\87124\\Desktop\\hello.txt','w')
File.write('good monring !\n')
File.close()
File = open('C:\\Users\\87124\\Desktop\\hello.txt','r')
content = File.read()
print(content)
#添加模式
File = open('C:\\Users\\87124\\Desktop\\hello.txt','a')
File.write('boy')
File.close()
File = open('C:\\Users\\87124\\Desktop\\hello.txt','r')
content = File.read()
print(content)

结果:在这里插入图片描述

3. shelve模块

导入shelve模块后,调用shelfFile = shelve.open()函数传入一个文件;
使用shelfFile[‘food’] =[‘apple’,‘banana’,‘water’]类似语句进行类似的键-值对赋值;最后在shelfFile上调用close()函数关闭文件。

ps.像字典一样,可以在shelfFile上调用keys()和values()函数

4. 实践项目——疯狂填词

题目:创建一个疯狂填词(Mad Libs)程序,它将读入文本文件, 并让用户在该文本文件中出现 ADJ、 N、 ADV 或 V 等单词的地方, 加上他们自己的文本。

import re
filename = input('Enter filename:\n')
# 读入文本文件
file = open(filename)
text = file.read()
file.close()
# 找到文中出现的单词,然后替换
textr = re.compile(r'ADJECTIVE|NOUN|ADVERB|VERB+').findall(text)
for names in textr:
    if names[0] == 'A':
        sub = input('Enter an %s:\n' % names)
    else:
        sub = input('Enter a %s:\n' % names)
    text = re.sub(r'ADJECTIVE|NOUN|ADVERB|VERB+',sub,text,1)
# 保存为新的文本文件
file = open('new'+filename,'w')
file.write(text)
file.close()
# 打印
print(text)

结果:
在这里插入图片描述
ps.可惜

第九章 组织文件

1. shutil、os、send2trash模块及相关函数

函数作用
shutil.copy(source,destination)将source处的文件 复制到destination目录下,如果destination是一个文件,则重命复制的原文件
shutil.copytree(source,destination)作用类似,但这个函数是复制整个文件夹及其包含的所有文件夹和文件
shutil.move(source,destination)将source处的文件夹或文件移动到destination目录下,如果destination是一个文件,则重命移动的原文件
os.unlink(path)删除指定path参数处的文件
os.rmdir(path)删除指定path参数处的文件夹,但文件夹必须为空
shutil.rmtree(path)删除指定path参数处的文件夹,包含改文件夹内的所有内容
send2trash.send2trash(path)安全删除指定path参数处的文件夹,可以在回收站恢复

ps.copy()(复制)可以创建新的路径,但move()(移动)不行,move()函数会覆写重名文件,以及一个move()函数会出现没有扩展名的文件的问题

2. zipfile模块压缩文件


#读取和解压zip文件
import zipfile,os #导入模块
os.chdir('c:\\')   #改变工作目录

exampleZip = zipfile.ZipFile('example.zip')  #创建ZipFile对象,读取压文件必须

exampleZip.namelist()  #查看压缩文件目录

spamInfo = exampleZip.getinfo('spam,txt')  # 获取ZipFile对象下spam.txt文件的属性
spamInfo.file_size #该文件原始大小
spamInfo.compress_size  #该文件压缩后大小

example.extractall()  #解压example.zip下全部文件到当前工作目录
example.extract('spam.txt','C:\\Users')  #解压example.zip下spam.txt文件到C:\Users路径

exampleZip.close #关闭ZipFile对象文件

#压缩文件
newZip = zipfile.ZipFile('new.zip','w') #以写模式打开一个新的ZipFile对象,'a'为添加模式
newZip.write('spam.txt',compress_type=zipfile.ZIP_DEFLATED) #将spam.txt文件压缩到new.zip文件中
newZip.close()  #关闭ZipFile对象文件

3. 项目及实践

下次复习阶段一起弄

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值