第八章 永久存储[DDT书本学习 小甲鱼]【3】

8.2 文件系统:介绍一个高大上的东西
Python自身带有很多使用的模块。
比如random模块的randint()函数生成随机数,不能直接调用,要引入。
import random
random.randint(0,9)
========================================================
OS模块,就是Operating System的缩写,意思是操作系统,平时说的ios是指
iPhone OS的意思,苹果操作系统。
Python是跨平台语言,同样代码在不同的操作系统不需要修改代码。
有了OS模块,不需要关系系统,OS模块会帮我们选择合适的模块并且调用。
---------------------------------------------------------------------------
表8-3 OS模块中关于 文件/目录 常用的函数使用方法
getcwd()返回当前工作目录
chdir(path)改变工作目录
listdir(path=".")列举指定目录的文件名("."表示当前目录,".."表示上一级目录)
-------------------------------
mkdir(path)创建单层目录,如果存在则抛出异常
makedirs(path)递归创建多层目录,目录存抛异,注意"E:\\a\\b"和"E:\\a\\c"不冲突
-----------------------------------
remove(path)删除文件
--------------------------------------
rmdir(path)删除单层目录,如果该目录非空则抛出异常
removedirs(path)递归删除目录,从子目录到父目录逐层尝试删除,遇到非空抛出异常
----------------------------------------
rename(ole,new)将文件ole重命名为new
----------------------------------------
system(command)运行系统shell命令
---------------------------------------------------------------------------
1.getcwd() 经常用来获取应用程序当前工作目录
import os
print(os.getcwd())
----------------------
C:\PycharmProjects\my1

2.chdir(path)改变当前工作目录,比如切换到E盘
import os
print(os.getcwd())
os.chdir("E:\\")
print(os.getcwd())
-------------------
C:\PycharmProjects\my1
E:\

3.listdir(path=".") 当前目录下的文件和子目录,列举出来。".."代表上层目录。
import os
print(os.chdir("E:\\迅雷下载\\"))
print(os.listdir(".."))
-----------------------------
[‘$RECYCLE.BIN‘, ‘PCKii‘, ‘System Volume Information‘, ‘u盘‘, ‘元旦会‘, ‘壁纸‘, ‘电影‘, ‘迅雷下载‘]

4.mkdir(path)创建文件夹,如果存在,报异常。
import os
os.chdir("E:\\")
os.mkdir("test")
print(os.listdir(‘.‘))
----------------------------
[‘$RECYCLE.BIN‘, ‘PCKii‘, ‘System Volume Information‘, ‘test‘, ‘u盘‘, ‘元旦会‘, ‘壁纸‘, ‘电影‘, ‘迅雷下载‘]
================再次运行程序,结果如下========================
Traceback (most recent call last):
File "C:/PycharmProjects/my1/t2.py", line 3, in <module>
os.mkdir("test")
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: ‘test‘

5.makedirs(path)创建多层目录 目录存在抛出异常
import os
os.chdir("E:\\")
os.makedirs(r".\a\b\c") # r".\a\b\e" 不抛出; r".\a\b"抛出异常

6.remove()删除指定的文件
rmdir(path)删除目录
removedirs()删除多层目录
===========开始我的表演========================
import os
os.chdir("E:\\")

print("起始情况:")
print(os.listdir())

print("创建工作:")
open(os.getcwd()+"test.txt","w")
os.mkdir("a")
os.makedirs(r".\b\c\d")
print(os.listdir())

print("删除工作:")
os.remove("test.txt")
os.rmdir("a")
os.removedirs(r".\b\c\d")
print(os.listdir())
--------------------------------------
起始情况:
[‘$RECYCLE.BIN‘, ‘PCKii‘, ‘System Volume Information‘, ‘u盘‘, ‘元旦会‘, ‘壁纸‘, ‘电影‘, ‘迅雷下载‘]
创建工作:
[‘$RECYCLE.BIN‘, ‘a‘, ‘b‘, ‘PCKii‘, ‘System Volume Information‘, ‘test.txt‘, ‘u盘‘, ‘元旦会‘, ‘壁纸‘, ‘电影‘, ‘迅雷下载‘]
删除工作:
[‘$RECYCLE.BIN‘, ‘PCKii‘, ‘System Volume Information‘, ‘u盘‘, ‘元旦会‘, ‘壁纸‘, ‘电影‘, ‘迅雷下载‘]

7.rename(old,new) 重命名文件或者文件名
import os
os.chdir(r"E:\test")
print(os.listdir())
os.rename("a","b")
os.rename("tanke.txt","plane.txt")
print(os.listdir())
---------------------------
[‘a‘, ‘tanke.txt‘]
[‘b‘, ‘plane.txt‘]
========================================

8.system(command)每个操作系统都会提供一些小工具,用于调用。
os.system("calc") 调用系统的计算器

9.walk(top)有时候非常有用,遍历top参数制定路径下的素有子目录,并且返回一个
三元组(路径,[包含目录],[包含文件])
代码如下
import os
os.chdir("E:\\")
for i in os.walk("test"):
print(i)
--------------------------------
(‘test‘, [‘bin‘, ‘obj‘], [‘20fdgfdgfd.ico‘, ‘chinaz4.ico‘])
(‘test\\bin‘, [‘Debug‘], [])
(‘test\\bin\\Debug‘, [‘app.publish‘], [‘捣蛋头-电话骚扰器.exe‘, ‘捣蛋头-电话骚扰器.exe.manifest‘])
(‘test\\bin\\Debug\\app.publish‘, [‘Application Files‘], [‘setup.exe‘, ‘WindowsFormsApplication14.application‘])
(‘test\\bin\\Debug\\app.publish\\Application Files‘, [‘WindowsFormsApplication14_1_2_4_2‘], [])
(‘test\\bin\\Debug\\app.publish\\Application Files\\WindowsFormsApplication14_1_2_4_2‘, [], [‘20fdgfdgfd.ico.deploy‘, ‘chinaz4.ico.deploy‘])
(‘test\\obj‘, [‘x86‘], [])
(‘test\\obj\\x86‘, [‘Debug‘], [])
(‘test\\obj\\x86\\Debug‘, [‘TempPE‘], [‘DesignTimeResolveAssemblyReferences.cache‘, ‘DesignTimeResolveAssemblyReferencesInput.cache‘, ‘GenerateResource.read.1.tlog‘, ‘GenerateResource.write.1.tlog‘])
(‘test\\obj\\x86\\Debug\\TempPE‘, [], [])
=============================================================
另外,path模块还提供了一些实用的定义,分别是:
os.curdir 表示当前目录
os.pardir 表示上一级目录("..")
os.sep 表示路径的分隔符 windows系统为"\\" 而Linux为"/"
os.linesep 表示当前平台使用的行终止符 windows系统为"\r\n" 而Linux为"\n"
os.name 表示当前使用的操作系统 Windows 返回 ‘nt‘; Linux 返回’posix‘。
=============================================================================

另一个强大的【模块是os.path】,它可以完成一些针对路径名的操作,如表所示【略】
列举几个,介绍如下:
10.basename(path)和dirname(path)分别用于获取文件名和路径名,举例
import os
print(os.path.dirname(r"a\b\test.txt"))
print(os.path.basename(r"a\b\test.txt"))
--------------------------------------------
a\b
test.txt

=============================

11.join(path1,path2)与BIF的那个join()不同,os.path.join()用于路径和文件名组合
成为完整路径。
import os
k=os.path.join(r"C:\Python37\Test","FishC.txt")
print(k)
------------------
C:\Python37\Test\FishC.txt
===========================================================

12.split(path)和splitext(path) 都是用于分割路径。
第一个比较盲目,如果全是目录,就会把最后一个目录当文件名,第二个高级智能一些。
示例如下:
import os
a=os.path.split("C:\Python37\Test\FishC.txt")
b=os.path.splitext("C:\Python37\Test\FishC.txt")
c=os.path.split("C:\Python37\Test")
print(a)
print(b)
print(c)
-----------------------------------------------------
(‘C:\\Python37\\Test‘, ‘FishC.txt‘)
(‘C:\\Python37\\Test\\FishC‘, ‘.txt‘)
(‘C:\\Python37‘, ‘Test‘)

13.getsize(file) 返回文件的大小,字节为单位
import os
os.chdir(r"D:\360Downloads\Software")
print(os.path.getsize("360.exe"))
-------------------------------
11912512
===========================

14.getatime(file),getctime(file)和getmtime(file)
最近访问时间-----创建时间-----修改时间
不过返回的是浮点型秒数,用time模块的gmtime()或localtime()换算。
示例代码如下:
import time
import os
os.chdir(r"D:\360Downloads\Software")
temp=time.localtime(os.path.getatime("360.exe"))
print("文件被访问的时间是:",time.strftime("Y% %b %d %H:%M:%S",temp))
------------------------------------------------------------------
文件被访问的时间是: 2019 Feb 05 21:28:43
----------------个人小结-----------------------
import time
import os
print(time.strftime("%Y%b%d %H:%M:%S",time.localtime(time.time())))
先是由time.time()得到当前时间的浮点值
再由time.localtime()进行元组整理
最后由time.strftime()格式化展示出来
==========================================================================
================================= pickle 腌制美味泡菜 ====================
1 从文件读取字符串很简单,但是要读取数值,就要多费周折。
无论read()还是readline()方法,返回的都是一个字符串,如果要从字符串中提取数值,
可以使用int()或者float()把类似“123”或者“3.14”的字符串强制转化。
2 以前保存文本容易,但是要保存的数据如列表,字典甚至是类的实例这些更复杂的数据类型,
普通文件操作就不知所措了,也许你会把他们全部转换为字符串,再写入文本进行保存,但
是,要把这个过程反过来,文本恢复数据到对象,那就异常麻烦了。
所以,模块出现了,这个就是pickle模块。
========================== pickle模块 =========================
import pickle
my = [123, 3.14, "导弹头", ["其它列表"]]
f = open(r"C:\Users\Daodantou\Desktop\ri.bo", "wb")
pickle.dump(my,f) #拿泡菜罐 放入东西 压紧保存
f.close()
-------------------------------已经保存,但是打开是乱码------------------
import pickle
e = open("C:\\Users\\Daodantou\\Desktop\\ri.bo", "rb")
my1 = pickle.load(e) #取出泡菜
print(my1)
e.close()
------------------------------正常读取文件到程序-------------------------

原文地址:https://www.cnblogs.com/daodantou/p/10357899.html

时间: 2024-10-08 06:14:50

第八章 永久存储[DDT书本学习 小甲鱼]【3】的相关文章

第八章 永久存储[DDT书本学习 小甲鱼]【2】

8.1.6 一个任务题目:将record.txt中的对话进行分割,并按照以下规则进行保存起来.1.小甲鱼的对话单独保存为boy_*.txt的文件(去掉"小甲鱼:")2.小客服的对话单独保存为girl_*.txt的文件(去掉"小客服:")3.文章中有三段对话,分别保存为boy_1.txt.boy_2.txt.boy_3.txt.girl_1.txt.girl_2.txt.girl_3.txt.共6个文件.(提示:每段对话用"==="隔开了)****

第八章 永久存储[DDT书本学习 小甲鱼]【1】

8.1 文件:因为懂你,所以永恒CPU-内存CPU-硬盘==========================================================8.1.1打开文件 open()函数打开并且返回文件对象open()有很多参数,作为初学者,先关注第一和第二个参数即可.open(带路径的文件名,指定文件打开模式)----------------------------------------------"r"只读模式(默认)"w"写入模式 覆盖

第九章 异常处理[DDT书本学习 小甲鱼]【1】

9.1 你不可能总是对的举例如下file_name=input("请输入文件的名称:")s="C:\\Users\\Daodantou\\Desktop\\"+file_namef=open(s,"r",encoding="UTF-8")print("文件的内容是:")for each in f: print(each)-------------------------------请输入文件的名称:reco

第三章 必须知道的一些基础知识[DDT书本学习 小甲鱼]【2】

3.6 条件分支========================完成第一个要求 提示作用 计算机如何比较 > < == != >= <= 操作符 开始例子源码 '''=========猜数字游戏==============''' i=7 number=input("猜猜我手中的数字是?:") n=int(number) if n==i: print("你猜对了!") else: if n>i: print("猜大了"

第五章 列表、元组和字符串[DDT书本学习 小甲鱼]【4】

5.1.9 关于分片"拷贝"的概念补充 [真正的拷贝是切片] 代码 list1=[1,3,2,9,7,8] list2=list1[:] print(list2) list3=list1 print(list3) ---------------------- [1, 3, 2, 9, 7, 8] [1, 3, 2, 9, 7, 8] 以上代码看似一样的输出结果,事实上呢,作如下修改后 list1 = [1, 3, 2, 9, 7, 8] list2 = list1[:] list3=l

第六章 函数[DDT书本学习 小甲鱼]【1】

6.1Python的乐高积木 程序分解为小的组成部分.三种方法实现:函数.对象.模块6.1.1 创建和调用函数 以前接触到的BIF就是Python帮我们封装好的函数 def 德芙 关键字: 代码如下 def myFirstFunction(): print("大家好,我是新来的1") print("大家好,我是新来的2") print("大家好,我是新来的3") myFirstFunction() 重复三次,该如何做? for i in rang

第六章 函数[DDT书本学习 小甲鱼]【3】

6.5 lambda表达式 谐音:懒不嗒?lam-b-da 匿名函数 代码 def my(x): teturn 2*x+1 e=my(5) print(e) --------------------- 11 如果使用lambda语句来定义,会是这样 lambda x:2*x+1 返回的是一个函数对象 进行使用,代码如下 g=lambda x:2*x+1 print(g(5)) ------------------------ 11 ================================

第七章 字典和集合[DDT书本学习 小甲鱼]【3】

4.copy() 复制字典a={1:"one",2:"two",3:"three"}b=a.copy()print(id(a))print(id(b))a[1]="four"print(a)print(b)-------------------24311023227282431102322800{1: 'four', 2: 'two', 3: 'three'}{1: 'one', 2: 'two', 3: 'three'}==

第四章 了不起的分支和循环[DDT书本学习 小甲鱼]【2】

4.4 Python可以有效避免"悬挂else" Python的缩进使用强制规定使得代码必须正确对齐,else属于那个if清晰可见.4.5 条件表达式(三元操作符) 代码 if x<y: small=x else: small=y 将以上代码用三元操作符来表示 语法 a=x if 条件 else y 含义:如果条件真则a=x,如果条件假则a=y. 代码改进 small=x if x<y else y Python的代码简洁高效!!!4.6 断言 assert 是分支if的近