221
文章
139342
访问
暂无分类
暂无标签
发布于2019-10-29 11:48 阅读(857) 评论(0) 点赞(22) 收藏(2)
我们准备利用17天时间,将 Python 基础的刻意练习分为如下任务:
Task01:变量、运算符与数据类型(1day)
Task02:条件与循环(1day)
Task03:列表与元组(2day)
Task04:字符串与序列(1day)
Task05:函数与Lambda表达式(2day)
Task06:字典与集合(1day)
Task07:文件与文件系统(2day)
Task08:异常处理(1day)
Task09:else 与 with 语句(1day)
Task10:类与对象(2day)
Task11:魔法方法(2day)
Task12:模块(1day)
摘要:
- 文件操作和方法
- 文件系统
1. 打开文件
open(file, mode=‘r’) 接收两个参数:文件名(file)和模式(mode),用于打开一个文件,并返回文件对象,如果该文件无法被打开,会抛出OSError。
打开模式 | 执行操作
完整的语法格式为:
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None)
file: 必需,文件路径(相对或者绝对路径)。
mode: 可选,文件打开模式
buffering: 设置缓冲
encoding: 一般使用utf8
errors: 报错级别
newline: 区分换行符
f = open('将进酒.txt')
print(f)
# <_io.TextIOWrapper name='将进酒.txt' mode='r' encoding='cp936'>
for each in f:
print(each)
# 君不见,黄河之水天上来,奔流到海不复回。
# 君不见,高堂明镜悲白发,朝如青丝暮成雪。
# 人生得意须尽欢,莫使金樽空对月。
# 天生我材必有用,千金散尽还复来。
# 烹羊宰牛且为乐,会须一饮三百杯。
# 岑夫子,丹丘生,将进酒,杯莫停。
# 与君歌一曲,请君为我倾耳听。
# 钟鼓馔玉不足贵,但愿长醉不复醒。
# 古来圣贤皆寂寞,惟有饮者留其名。
# 陈王昔时宴平乐,斗酒十千恣欢谑。
# 主人何为言少钱,径须沽取对君酌。
# 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
2. 文件对象方法
f = open("将进酒.txt")
print('FileName:', f.name) # FileName: 将进酒.txt
f.close()
f = open('将进酒.txt', 'r')
line = f.read(20)
print("读取的字符串: %s" % line)
# 读取的字符串: 君不见,黄河之水天上来,奔流到海不复回。
f.close()
f = open('将进酒.txt', 'r')
line = f.readline()
print("读取的字符串: %s" % line)
# 读取的字符串: 君不见,黄河之水天上来,奔流到海不复回。
f.close()
f = open('将进酒.txt', 'r')
lines = f.readlines()
print(lines)
for each in lines:
each.strip()
print(each)
# 君不见,黄河之水天上来,奔流到海不复回。
# 君不见,高堂明镜悲白发,朝如青丝暮成雪。
# 人生得意须尽欢,莫使金樽空对月。
# 天生我材必有用,千金散尽还复来。
# 烹羊宰牛且为乐,会须一饮三百杯。
# 岑夫子,丹丘生,将进酒,杯莫停。
# 与君歌一曲,请君为我倾耳听。
# 钟鼓馔玉不足贵,但愿长醉不复醒。
# 古来圣贤皆寂寞,惟有饮者留其名。
# 陈王昔时宴平乐,斗酒十千恣欢谑。
# 主人何为言少钱,径须沽取对君酌。
# 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
f.close()
f = open('将进酒.txt', 'r')
line = f.readline()
print(line)
# 君不见,黄河之水天上来,奔流到海不复回。
pos = f.tell()
print(pos) # 42
f.close()
f = open('将进酒.txt', 'r')
line = f.readline()
print(line)
# 君不见,黄河之水天上来,奔流到海不复回。
line = f.readline()
print(line)
# 君不见,高堂明镜悲白发,朝如青丝暮成雪。
f.seek(0, 0)
line = f.readline()
print(line)
# 君不见,黄河之水天上来,奔流到海不复回。
f.close()
在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。
如果文件打开模式带b,那写入文件内容时,str(参数)要用encode方法转为bytes形式,否则报错:TypeError: a bytes-like object is required, not ‘str’。
str = '...'
# 文本 = Unicode字符序列
# 相当于 string 类型
str = b'...'
# 文本 = 八位序列(0到255之间的整数)
# 字节文字总是以‘b’或‘B’作为前缀;它们产生一个字节类型的实例,而不是str类型。
# 相当于 byte[]
Sample:
f = open('将进酒.txt', 'r+')
str = '\n作者:李白'
f.seek(0, 2)
line = f.write(str)
f.seek(0, 0)
for each in f:
print(each)
# 君不见,黄河之水天上来,奔流到海不复回。
# 君不见,高堂明镜悲白发,朝如青丝暮成雪。
# 人生得意须尽欢,莫使金樽空对月。
# 天生我材必有用,千金散尽还复来。
# 烹羊宰牛且为乐,会须一饮三百杯。
# 岑夫子,丹丘生,将进酒,杯莫停。
# 与君歌一曲,请君为我倾耳听。
# 钟鼓馔玉不足贵,但愿长醉不复醒。
# 古来圣贤皆寂寞,惟有饮者留其名。
# 陈王昔时宴平乐,斗酒十千恣欢谑。
# 主人何为言少钱,径须沽取对君酌。
# 五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。
# 作者:李白
f.close()
fileObject.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符\n。
f = open('test.txt', 'w+')
seq = ['小马的程序人生\n', '老马的程序人生']
f.writelines(seq)
f.seek(0, 0)
for each in f:
print(each)
# 小马的程序人生
# 老马的程序人生
f.close()
我们所知道常用的操作系统就有:Windows,Mac OS,Linu,Unix等,这些操作系统底层对于文件系统的访问工作原理是不一样的,因此你可能就要针对不同的系统来考虑使用哪些文件系统模块……,这样的做法是非常不友好且麻烦的,因为这样就意味着当你的程序运行环境一改变,你就要相应的去修改大量的代码来应对。
有了OS(Operation System)模块,我们不需要关心什么操作系统下使用什么模块,OS模块会帮你选择正确的模块并调用。
import os
path = 'C:\\'
print("当前工作目录 : %s" % os.getcwd())
# 当前工作目录 : C:\Users\Administrator\PycharmProjects\untitled1
os.chdir(path)
print("目录修改成功 : %s" % os.getcwd())
# 目录修改成功 : C:\
import os
dirs = os.listdir()
for item in dirs:
print(item)
import os
if os.path.isdir(r'.\b') is False:
os.mkdir(r'.\B')
os.mkdir(r'.\B\A')
os.mkdir(r'.\C\A') # FileNotFoundError
import os
os.makedirs(r'.\E\A')
import os
print("目录为: %s" % os.listdir(r'.\E\A'))
os.remove(r'.\E\A\test.txt')
print("目录为: %s" % os.listdir(r'.\E\A'))
import os
print("目录为: %s" % os.listdir(r'.\E'))
os.rmdir(r'.\E\A')
print("目录为: %s" % os.listdir(r'.\E'))
import os
print("目录为: %s" % os.listdir(os.getcwd()))
os.removedirs(r'.\E\A') # 先删除A 然后删除E
print("目录为: %s" % os.listdir(os.getcwd()))
import os
print("目录为: %s" % os.listdir(os.getcwd()))
os.rename("test", "test2")
print("重命名成功。")
print("目录为: %s" % os.listdir(os.getcwd()))
import os
path = os.getcwd() + '\\a.py'
a = os.system(r'python %s' % path)
os.system('calc') # 打开计算器
import os
print(os.curdir) # .
print(os.pardir) # ..
print(os.sep) # \
print(os.linesep)
print(os.name) # nt
import os
# 返回文件名
print(os.path.basename(r'C:\test\lsgo.txt')) # lsgo.txt
# 返回目录路径
print(os.path.dirname(r'C:\test\lsgo.txt')) # C:\test
# 将目录和文件名合成一个路径
print(os.path.join('C:\\', 'test', 'lsgo.txt')) # C:\test\lsgo.txt
# 分割文件名与路径
print(os.path.split(r'C:\test\lsgo.txt')) # ('C:\\test', 'lsgo.txt')
# 分离文件名与扩展名
print(os.path.splitext(r'C:\test\lsgo.txt')) # ('C:\\test\\lsgo', '.txt')
import os
import time
file = r'.\lsgo.txt'
print(os.path.getsize(file)) # 30
print(os.path.getatime(file)) # 1565593737.347196
print(os.path.getctime(file)) # 1565593737.347196
print(os.path.getmtime(file)) # 1565593797.9298275
print(time.gmtime(os.path.getctime(file)))
# time.struct_time(tm_year=2019, tm_mon=8, tm_mday=12, tm_hour=7, tm_min=8, tm_sec=57, tm_wday=0, tm_yday=224, tm_isdst=0)
print(time.localtime(os.path.getctime(file)))
# time.struct_time(tm_year=2019, tm_mon=8, tm_mday=12, tm_hour=15, tm_min=8, tm_sec=57, tm_wday=0, tm_yday=224, tm_isdst=0)
import os
print(os.path.ismount('D:\\')) # True
print(os.path.ismount('D:\\Test')) # False
Python 的 pickle 模块实现了基本的数据序列和反序列化。
pickle.dump(obj, file, [,protocol]) 将obj对象序列化存入已经打开的file中。
-obj:想要序列化的obj对象。
pickle.load(file) 将file中的对象序列化读出。
import pickle
dataList = [[1, 1, 'yes'],
[1, 1, 'yes'],
[1, 0, 'no'],
[0, 1, 'no'],
[0, 1, 'no']]
dataDic = {0: [1, 2, 3, 4],
1: ('a', 'b'),
2: {'c': 'yes', 'd': 'no'}}
# 使用dump()将数据序列化到文件中
fw = open(r'.\dataFile.pkl', 'wb')
# Pickle the list using the highest protocol available.
pickle.dump(dataList, fw, -1)
# Pickle dictionary using protocol 0.
pickle.dump(dataDic, fw)
fw.close()
# 使用load()将数据从文件中序列化读出
fr = open('dataFile.pkl', 'rb')
data1 = pickle.load(fr)
print(data1)
data2 = pickle.load(fr)
print(data2)
fr.close()
# [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]
# {0: [1, 2, 3, 4], 1: ('a', 'b'), 2: {'c': 'yes', 'd': 'no'}}
作者:放羊人
链接: http://www.pythonheidong.com/blog/article/147472/
来源:python黑洞网 www.pythonheidong.com
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
赞一赞 or 踩一踩
昵称:
评论内容:(最多支持255个字符)
1 python经典电子书大合集下载 下载次数 8122
2 零基础java开发工程师视频教程全套,基础+进阶+项目实战(152G) 下载次数 7549
3 零基础前端开发工程师视频教程全套,基础+进阶+项目实战(共120G) 下载次数 7442
4 零基础大数据全套视频400G 下载次数 7005
5 零基础php开发工程师视频教程全套,基础+进阶+项目实战(80G) 下载次数 6893
6 零基础软件测试全套系统教程 下载次数 6504
7 全套人工智能视频+pdf 下载次数 6440
8 IOS全套视频教程 基础班+就业班 下载次数 4680
9 编程小白的第一本python入门书(高清版)PDF下载 下载次数 3309
10 effective python编写高质量Python代码的59个有效方法 pdf下载 下载次数 3118
11 Python深度学习 pdf下载 下载次数 3087
12 python从入门到精通视频(全60集)python视频教程下载 下载次数 3002
13 python项目开发视频 下载次数 3001
14 笨办法学python pdf下载 下载次数 3000
15 使用python+pygame开发的小游戏《嗷大喵快跑》源码下载 下载次数 2998
16 黑马2017年java就业班全套视频教程 下载次数 2992
17 树莓派Python编程指南 pdf下载 下载次数 2991
18 python实战项目 平铺图像板系统源码下载,适用于想要保存,标记和共享图像,视频和网页的用户 下载次数 2987
19 利用python实现程序内存监控脚本 下载次数 2987
20 老男孩python自动化视频 下载次数 2982
21 Python基础教程 pdf下载 下载次数 2974
22 老王python基础+进阶+项目视频教程 下载次数 2973
23 尚硅谷Go学科全套视频 下载次数 2972
24 某硅谷Python项目+AI课程+核心基础视频教程 下载次数 2968
25 Web前端实战精品课程 下载次数 2967
26 [小甲鱼]零基础入门学习Python 下载次数 2962
27 tron python小游戏 下载次数 2962
28 老男孩python全栈开发15期 下载次数 2958
29 Python Cookbook第三版中文PDF下载高清完整扫描原版 下载次数 2955
30 2017最新web前端开发完整视频教程附源码 下载次数 2948
31 Python算法教程_中文版 pdf下载 下载次数 2931
32 最新全套完整JAVAWEB2018开发视频 下载次数 2926
33 Spring boot实战视频6套下载 下载次数 2909
34 python全套视频十五期(116G) 下载次数 2905
35 Python项目实战 下载次数 2885
36 30个小时搞定Python网络爬虫 含源码 下载次数 2883
37 python全自动抢火车票教程-python视频教程下载 下载次数 2883
38 简明python教程 (A Byte of Python)pdf下载 下载次数 2880
39 Python高性能编程 pdf下载 下载次数 2878
40 尚硅谷大数据之Hadoop视频 下载次数 2876
41 利用Python进行数据分析 pdf下载 下载次数 2868
42 流畅的Python PDF下载高清完整扫描原版 下载次数 2865
43 Python A~B~C~ python视频教程下载 下载次数 2865
44 数据结构与算法视频(小甲鱼讲解-全) 下载次数 2863
45 web小程序表白天数倒计时源码下载 下载次数 2862
46 python基础视频教程 下载次数 2862
47 go语言全套视频 下载次数 2854
48 清华学霸尹成Python爬虫视频-ok 下载次数 2846
49 黑马前端36期最全视频和代码 下载次数 2842
50 2018最新全套web前端视频教程+源码下载 下载次数 2841