文章目录

  • 1.文件操作(IO技术)
    • (1)打开文件
    • (2)编码
    • (3)close()关闭文件流
    • (4)文本文件读取
    • (5)二进制文件的读写
    • (6)文件对象常用的方法和属性
    • (7)使用pickle序列化
    • (8)csv文件的操作
  • 2.os和os.path模块
    • (1)os模块
    • (2)文件和目录操作
    • (3)os.path模块
    • (4)walk()递归遍历所有文件和目录
    • (5)shutil拷贝
    • (6)压缩
  • 3.递归算法

1.文件操作(IO技术)

(1)打开文件

f = open(文件名[,打开方式])

#文件写入
f  = open('a.txt','a')#新建一个文件,a,文件不存在则创建
s = 'slene\nbai\n'
f.write(s)#把字符串写在文件里
f.close()

(2)编码

windows操作系统是GBK,python用Unicode编码

f  = open('a.txt','w',encoding='UTF-8')#UTF-8新建一个文件,中文久不会乱码
s = 'slene\nbai\n啦啦啦啦啦'
f.write(s)
f.close()
'''结果
slene
bai
啦啦啦啦啦
'''

(3)close()关闭文件流

s = 'baibaibai'
with open('a.txt','w') as f:f.write(s)
#或者
try:s = 'baibaibai'f = open('b.txt','w')f.write(s)
except BaseException as e:print(e)
finally:f.close()

(4)文本文件读取

#读取前面5个字符
with open('a.txt','r',encoding='gbk') as f:print(f.read(5))#使用迭代器(每次返回一行)读取文本文件
with open('a.txt','r',encoding='gbk') as f:for a in f:print(a,end='')#一行一行读取
with open('a.txt','r',encoding='gbk') as f:while True:fragment = f.readline()if not fragment:breakelse:print(fragment,end='')
#把文本文件中的每行都标上行号
with open('a.txt','r') as f:lines = f.readlines()lines = [temp.rstrip() + '#'+str(index)+'\n' for index,temp in enumerate(lines)]#推导式生成列表
with open('a.txt','w') as f:f.writelines(lines)#.rstrip() 去掉换行符

(5)二进制文件的读写

不加b,默认是文本文件

#拷贝一张图片
with open('D:\\photo\\Saved Pictures\\a.jpg','rb') as f:with open('a.copy.jpg','bw') as w:for line in f.readlines():w.write(line)
print('finnish copy')

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


# -*- coding: GBK -*-
with open('b.txt','r') as f:print('文件名是:{}'.format(f.name))print('指针当前位置:',f.tell())print('读取的一行内容:',str(f.readline()))print('读完后指针现在的位置:',f.tell())f.seek(7)  #指针偏移到第7个字符print('读取的一行内容:', str(f.readline()))
'''结果:
文件名是:b.txt
指针当前位置: 0
读取的一行内容: People may wonder why different words are used to describe these four countries:读完后指针现在的位置: 82
读取的一行内容: may wonder why different words are used to describe these four countries:
'''

(7)使用pickle序列化

序列化指将对象转化成串行化数字形式

# -*- coding: GBK -*-
import pickle
a1 = 'bai'
a2 = 234
a3 = [20, 30, 40]
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)

(8)csv文件的操作

# -*- coding: GBK -*-
import csv
with open('table1.csv','r') as f:a_csv = csv.reader(f)    #reader方法print(list(a_csv))       #一个列表for row in a_csv:print(row)
'''
[['id', 'name', 'age', 'salary'], ['1', 'bai', '18', '5000'], ['2', 'selene', '19', '8000'], ['3', 'tutu', '20', '10000']]
'''
#后面的循环不能打印,因为前面readerh之后,指针到了最后
# -*- coding: GBK -*-
import csv
with open('table1.csv','r') as f:a_csv = csv.reader(f)for row in a_csv:print(row)
'''
['id', 'name', 'age', 'salary']
['1', 'bai', '18', '5000']
['2', 'selene', '19', '8000']
['3', 'tutu', '20', '10000']
'''
#去掉前面的,就可以打印了
#写入表格
with open('table2.csv','w') as f:b_csv = csv.writer(f)b_csv.writerow(['id', '姓名', '年龄'])b_csv.writerow(['01', '白', '24'])b_csv.writerow(['02', '白2', '25'])

2.os和os.path模块

(1)os模块

# -*- coding: GBK -*-
import os
#os.system('notepad.exe')#调用记事本程序
#os.system('regedit')#调用注册表
#os.system('cmd')#直接调用可执行的程序(微信)
os.system(r'D:\\APP\\weixin\\WeChat\\WeChat.exe')

(2)文件和目录操作


# -*- coding: GBK -*-
import os
######获取文件和文件夹相关信息#######
print(os.name) #获得操作系统的信息,windows--nt,linux--posix
print(os.sep)#分隔符,windows--\,linux--/
print(repr(os.linesep))
print(os.stat('python148.py'))#文件所有属性
######关于作目录的操作#######
print(os.getcwd())  #获取当前文件工作目录
os.mkdir('book')     #在当前工作目录前新建一个文件夹
os.chdir('d:')      #改变当前工作目录
######创建目录、#######
os.mkdir('book1')   #建立目录
os.rmdir('book1')
os.makedirs('电影/美剧')   #建立多级目录
os.removedirs('电影/美剧')
os.makedirs('电影/美剧/老友记')
os.makedirs('../电影/韩剧/朴信惠')   #..指上一级目录
dir = os.listdir('电影')     #返回'电影'下一级目录名,这里是美剧
print(dir)

(3)os.path模块

# -*- coding: GBK -*-
import os
import os.path
print(os.path.isabs('D:/pytorch_learning'))  #是否是绝对路径,True
print(os.path.isdir('D:/pytorch_learning'))   #是否是目录,True
print(os.path.isfile('D:/pytorch_learning'))  #是否是文件,False
print(os.path.exists('D:/pytorch_learning'))  #是否存在,Trueprint(os.path.getsize('b.txt'))   #字节大小,131
print(os.path.abspath('b.txt'))   #绝对路径,D:\pytorch_learning\python051_project\b.txt
print(os.path.dirname('D:/pytorch_learning'))   #返回目录的路径,D:/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))    #分割路径,返回一个元组,('D:\\pytorch_learning\\python051_project', 'b.txt')
print(os.path.splitext(path)) #返回文件拓展名,按点分割,('D:\\pytorch_learning\\python051_project\\b', '.txt')
print(os.path.join('d:\\','python','pytorch'))  #连接目录, d:\python\pytorch
# -*- coding: GBK -*-
#列出工作目录下所有的.py文件
import os
import os.pathwork_dir = os.getcwd()
file_list = os.listdir(work_dir)  #获取所有子目录
for filename in file_list:if os.path.splitext(filename)[1] == '.py':#或if filename.endwith('py')print(filename)
print('##########')
file_list2 = [filename for filename in os.listdir(work_dir) if filename.endswith('txt')]#也可以用推导式
for f in file_list2:print(f,end='\n')

(4)walk()递归遍历所有文件和目录

# -*- coding: GBK -*-
import os
path = os.getcwd()
print(path)
file_list = os.walk(path)
for dirpath,dirnames,filenames in file_list:for dir in dirpath:print(dir)

(5)shutil拷贝

# -*- coding: GBK -*-
import shutil
shutil.copyfile('a.txt','a_copy.txt') #拷贝文件
shutil.copytree('movie','movie2')  #拷贝文件夹
shutil.copytree('movie','movie3',ignore=shutil.ignore_patterns('*.txt','*.zip')) #拷贝文件夹,.txt和.zip的都不考

(6)压缩

shutil.make_archive()
zipfile

# -*- coding: GBK -*-
import shutil
import zipfile
shutil.make_archive('movie/gg','zip','movie/Korae')#用shutil简单压缩
######用zipfile压缩########
z1 = zipfile.ZipFile('a.zip','w')
z1.write('a_copy.txt')
z1.write('a.copy.jpg')
z1.close()z2 = zipfile.ZipFile('a.zip','r') #解压缩
z2.extractall('movie2')  #解压后放在movie2的目录下

3.递归算法

#阶乘
def factorial(i):global aa = a * ii = i-1if i >1:factorial(i)else:print(a)
######更简单的写法########
factorial(int(input('input one number:')))def factorial2(i):if i == 1:return ielse:return i*factorial2(i-1)print(factorial2(5))
# -*- coding: GBK -*-
#递归打印所有目录和文件
import os
def getAllFiles(path):childFiles = os.listdir(path)for file in childFiles:filepath = os.path.join(path,file)if os.path.isdir(filepath):getAllFiles(filepath)print(filepath)
getAllFiles('movie')
'''结果
movie\a.txt
movie\America\bigbang
movie\America
movie\gg.zip
movie\Korae
'''

2021-09-08 python基础知识学习:文件操作和os模块相关推荐

  1. Python基础知识_day10_文件操作_pickle模块_os模块_shutil模块

    文章目录 1. 文本文件和二进制文件 2. 创建文件对象 open() 3. 文本文件的写入 3.1 write()/writelines()写入数据 3.2 with语句 4. 文本文件的读取 5. ...

  2. Python基础知识学习笔记——Matplotlib绘图

    Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...

  3. Python 基础知识学习笔记——OpenCV(1)

    Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...

  4. python基础知识学习笔记(2)

    python基础知识学习笔记(2) 整理一下python基础知识,以防忘记 文章目录 python基础知识学习笔记(2) python简洁的一行代码 python简洁的一行代码 1.交换两个变量 # ...

  5. python基础知识学习笔记(1)

    python 基础知识学习笔记(1) 总结一下Python基础知识,以防忘记. 文章目录 python 基础知识学习笔记(1) 一.起步 1.python安装与编译环境 二.变量和简单数据类型 三.列 ...

  6. python基础知识学习总结

    python基础知识学习总结 从零开始学习python,已经学习完python相关的基础教程,学习地址详见:http://www.runoob.com/python/python-tutorial.h ...

  7. Python 基础知识学习笔记——NumPy

    Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...

  8. Python基础知识学习笔记(一)

    Python基础知识学习笔记(一) 文章目录 Python基础知识学习笔记(一) (一) 认识python 1.注释 2.变量及类型 3.关键字(标识符) (1)什么是关键字? (2)查看关键字 (3 ...

  9. 自学Python第九天- 模块、包、编码、文件操作、OS 模块、打包

    自学Python第九天- 模块.包.编码.文件操作.OS 模块.打包 模块 导入模块 程序入口 包 编码 文件操作 打开或创建文件 常用的文件打开模式 边读边写 文件对象的常用方法 读写 CSV Ex ...

  10. Python基础知识点拾遗---文件IO(os、filecmp、shutil库)、sys库、序列化(pickle)、类

    Python基础知识点拾遗 文件IO 文本 目录 os 获取文件的创建.修改及最近访问时间 获取当前文件的大小 获取当前的登录用户名称 获取当前的cpu核数 调用操作系统底层的random生成器 sh ...

最新文章

  1. 《对软件工程课程的期望》
  2. 简述Linux C下线程池的使用
  3. 单摆运动属于什么现象_在学习高中物理中有什么好的经验可以分享?
  4. python百鸡百钱递归_百钱百鸡,一百块钱买一百只鸡的递归算法 javascript实现
  5. c++ char*转string_CC++|输入输出与内存、缓存、设备文件
  6. 有关代码段、数据段、BOSS段、堆、栈的存储位置问题。。。
  7. python接口自动化参数化_python接口自动化-参数化
  8. 关于scala中lazy val的几个注意事项
  9. yii2 配置文件加载顺序, 以及调用自定义配置信息。
  10. 学生选课管理系统 选课信息管理系统管理端
  11. python 离散点 等高线_飞时达软件离散点高程、等高线高程、特征线高程等检查与处理...
  12. 两个实用型教学网站:菜鸟教程与W3School,估计是国内做得做好的了
  13. 文件二维码:在线直接扫一扫二维码查看下载资料
  14. python文本自动伪原创_手把手教你使用python制作伪原创工具
  15. 您的组织策略阻止我们为您完成此操作
  16. croeldraw基本知识点
  17. GCF(3)---GCF简介
  18. 如何在windows下运用dd来下修复坏块?
  19. Win7 EFS 加密文件图解
  20. 性能优化的 10 个技巧

热门文章

  1. 石臻臻的2021总结和2022展望 | 文末彩蛋
  2. 健康天天报(企业微信)安卓2021.4.2
  3. k8s--serviec,endpoint,ingress和pod
  4. 文章内容丢失测试奥术大师多
  5. 月薪5万的项目经理,工作能力到底有多强?
  6. JS:Axios文件下载
  7. 阻塞和非阻塞IO,异步和同步IO
  8. 2021014615②
  9. 优秀php求职简历,[php程序员求职简历]php程序员就业方向
  10. 2018沈阳网络赛D