Python-OS模块

python文件操作模块

在这里插入图片描述

open()打开方式

在这里插入图片描述

文本文件的写入一般就是三个步骤:

  1. 创建文件对象
  2. 写入数据
  3. 关闭文件对象
f = open(r"a.txt","a")
s = "itbaizhan\nsxt\n"
f.write(s)
f.close()

close()关闭文件流

由于文件底层是由操作系统控制,所以我们打开的文件对象必须显式调用 close()方法
关闭文件对象。当调用 close()方法时,首先会把缓冲区数据写入文件(也可以直接调用 flush()方法),再关闭文件,释放文件对象。
为了确保打开的文件对象正常关闭,一般结合异常机制的 finally 或者 with关键字实现.无论何种情况都能关闭打开的文件对象。

with 语句(上下文管理器)

s = ["高1\n","高2\n","高3\n"]
with open(r"d:\bb.txt","w") as f:
	f.writelines(s)

文本文件的读取

文件的读取一般使用如下三个方法:

  1. read([size])
    从文件中读取 size 个字符,并作为结果返回。如果没有 size 参数,则读取整个文件。
    读取到文件末尾,会返回空字符串。
  2. readline()
    读取一行内容作为结果返回。读取到文件末尾,会返回空字符串。
  3. readlines()
    文本文件中,每一行作为一个字符串存入列表中,返回该列表

二进制文件的读取和写入

with open('aa.gif', 'rb') as f:
with open('aa_copy.gif', 'wb') as w:
	for line in f.readlines():
		w.write(line)
print('图片拷贝完成!')

在这里插入图片描述在这里插入图片描述

pickle 序列化

序列化我们使用:

pickle.dump(obj, file)

obj 就是要被序列化的对象,file 指的是存储的文件

pickle.load(file)

从 file 读取数据,反序列化成对象

CSV文件操作

CSV读取

import csv
with open(r"d:\a.csv") as a:
	a_csv = csv.reader(a)#创建 csv 对象,它是一个包含所有数据的列表,每一行为一个元素
	headers = next(a_csv)#获得列表对象,包含标题行的信息
	print(headers)
for row in a_csv:#循环打印各行内容
	print(row)

CSV写入

import csv
headers = ["工号","姓名","年龄","地址","月薪"]
rows = [("1001","高淇",18,"西三旗 1 号院","50000"),("1002","高八",19,"西三旗 1 号院","30000")]
with open(r"d:\b.csv","w") as b:
	b_csv = csv.writer(b)#创建 csv 对象
	b_csv.writerow(headers)#写入一行(标题)
	b_csv.writerows(rows)#写入多行(数据)

OS模块

OS操作系统操作

import os
os.system("ping www.baidu.com")

OS文件操作
在这里插入图片描述
OS目录操作
在这里插入图片描述在这里插入图片描述

#测试 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("a.txt"))#文件是否存在
print(os.path.getsize("a.txt"))#文件大小
print(os.path.abspath("a.txt"))#输出绝对路径
print(os.path.dirname("d:/a.txt"))#输出所在目录
########获得创建时间、访问时间、最后修改时间##########
print(os.path.getctime("a.txt"))#返回创建时间
print(os.path.getatime("a.txt"))#返回最后访问时间
print(os.path.getmtime("a.txt"))#返回最后修改时间
################对路径进行分割、连接操作####################
path = os.path.abspath("a.txt")#返回绝对路径
print(os.path.split(path))#返回元组:目录、文件
(输出:'C:\\Users\\Administrator\\PycharmProjects\\mypro_io\\test_os', 'a.txt')
print(os.path.splitext(path))#返回元组:路径、扩展名
(输出:'C:\\Users\\Administrator\\PycharmProjects\\mypro_io\\test_os\\a',
'.txt')
print(os.path.join("aa","bb","cc")) #返回路径:aa/bb/cc

walk遍历

#coding=utf-8
import os
all_files = []
path = os.getcwd()
list_files = os.walk(path)
for dirpath,dirnames,filenames in list_files:
	for dir in dirnames:
		all_files.append(os.path.join(dirpath,dir))
	for name in filenames:
		all_files.append(os.path.join(dirpath,name))#打印子目录和子文件
for file in all_files:
print(file)

shutil模块

import shutil
#copy 文件内容
shutil.copyfile("1.txt","1_copy.txt")
import shutil
import zipfile #解压缩:
z2 = zipfile.ZipFile("a.zip","r")
z2.extractall("d:/") #设置解压的地址
z2.close()

递归算法

递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。

利用递归可以用简单的程序来解决一些复杂的问题。比如:斐波那契数列的计算、汉诺塔、快排等问题。
递归结构包括两个部分:

  1. 定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。
  2. 递归体。解答:什么时候需要调用自身方法。
#coding=utf-8
#测试递归
def factorial(n):
	if n==1:
		return 1
	else:
		return n*factorial(n-1)

a = factorial(10)
print(a)

递归遍历目录

import os
allfile = []
def getFiles(path,level):
	childFiles = os.listdir(path)
	for file in childFiles:
		filepath = os.path.join(path,file)
		if os.path.isdir(filepath):
			getFiles(filepath,level+1)
		allfile.append("\t"*level+filepath)

getFiles(os.getcwd(),0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值