[Python]学习基础篇:文件和目录

简介:

文件

文件是数据在外部介质上的数据的集合,对于文件在Linux系统上包括普通文件,目录文件,二进制文件,设备文件等。

  • 文件的打开或者创建 
    方法:open(‘file_name’,’打开方式’[,buf_size]) 
    buf_size:参数指的是文件缓存区的大小,0代表不缓存,1代表缓存,使用系统默认设置的缓存区大小,大于1代表缓存大小。 
    打开方式:如下表

打开方式 说明
‘r’ 只读的方式打开文件,若文件不存在,则产生异常
‘r+’ 以读写的方式方式打开文件,不删除原内容,若文件不存在,产生异常
‘w’ 只写的方式打开文件,删除原内容,无文件则创建
‘w+’ 读写的方式发开文件,删除原内容,无文件则创建
‘a’ 以追加的方式打开一个文件,不删除原内容,在文件末尾追加数据,无文件则创建
‘a+’ 以读写的方式打开文件,不删除原内容,在末尾写数据,无文件则创建
‘rb’ 同’r’,打开二进制文件
‘rb+’ 同’r+’,打开二进制文件
‘wb’ 同’w’,打开二进制文件
‘wb+’ 同’w+’,打开二进制文件
‘ab’ 同’a’,打开二进制文件
‘ab+’ 同’a+’,打开二进制文件

  • 普通文件的读写 
    读取: 
    read([num]) 
    若num不写时,读取整个文件的内容,num>0时读取num大小字节的数 
    readline():读取文件的一行 
    readlines():读取文件的每一行 
    例如:

(1).使用read() !/bin/python f=open('file.txtx','r') s=f.read() f.close() print(s) (2).使用readline读取一行读完整个文件 !/bin/python f=open('file.txtx','r') whil True:           //读完整个文件     s=f.readline()    //读取一行     if s=='':         break     print s f.close (3).使用readlines()读取文件的每一行,读完整个文件 !/bin/python f=open('file.txtx','r') s=f.readlines()        //读取后形成一个元组for line in s:     print line, f.close()

写入: 
write(str)


  • 二进制文件的读取和写入 
    写去: 
    对于二进制文件,是无法将数字,bool类型的数据写入到二进制文件中。 
    (1).使用struct模块中的pack()方法将数字和bool型转化为字节串,然后使用write方法写入到二进制文件中。 
    方法:pack(‘格式传’,格式对象) 
    (2).使用pickle模块中的dump方法直接将对象转化为字节串并写入到二进制文件中。 
    方法:dump(格式obj,f) 
    例如:

(1).使用struct模块  !/bin/pythonimport strcut f=open('file.bit','wb') n=100w=Truex=392.0 str=struct.pack('if?',b,x,w) f.write(str) f.close() (2).使用pickle模块 !/bin/pythonimport pickle f=open('file.bit','wb') n=100w=Truex=392.0 pickle.dump(n,f) pickle.dump(w,f) pickle.dump(x,f) f.close()

读取: 
二进制文件的读取就是写入的逆过程 
(1).读取字节串,使用函数将其还原成数据,使用struct模块中的unpack()方法,返回一个元组 
方法:unpack(格式传,字节表)

!/bin/pythonimport  structf=open('file.bit','rb') str=f.read(3) tu=struct.unpack('if?',str)    //返回一个元组print tu f.close()

(2).使用pickle模块中load方法直接读取并还原成原有数据,返回还原后的对象 
方法:load(f)

!/bin/python import pickle f=open('file.bit','rb') n=pickle.load(f)      #读出文件的数据个数 while i<n:     x=pickle.load(f)     print x     i++ f.close()
  • 文件对象的|常用方法

方法名 说明
flush() 把缓存区的内容写入文件
close() 把缓存取得内容写入文件,并关闭文件释放对象
seek(offset[,whence]) 文件指针移动
tell() 返回文件指针当前位置
  • 常用的文件操作函数

对于文件的操作,python提供了os模块和os.path模块的函数 
(1).os模块

函数名 说明
access(path) 根据mode指定的权限访问文件
chmod() 修改文件的访问权限
remove(path) 删除path指定的文件
rename(src,dst) 重命名
stat(path) 返回指定文件的属性
fstat(path) 返回打开文件的所有属性
listpath(path) 返回path目录下的文件和目录

(2).os.path模块

函数名 说明
abspath(path) 返回path的绝对路径
dirname(path) 返回目录的路径
exists(path) 文件是否存在
getsize(file_name) 返回文件的大小
isabs(path) 是否为绝对路径
isdir(path) 是否为目录
isfile(path) 是否为文件
splitext(p) 从路径中分割出扩展名
splitdrive(p) 从路径中分割出驱动器的名称
walk(path) 遍历目录数

目录

  • 目录的创建 
    (1).创建单个目录 
    方法:mkdir(path) 
    (2).创建多级目录 
    方法:makedirs(path1/path2/….)

  • 目录的删除 
    (1).删除一个目录 
    方法:rmdir(path) 
    (2).删除多级目录 
    方法:removedirs(path1/path2/….)

  • 目录的遍历 
    对于目录的遍历,在上述文件的操作方法中有一个listdir(path)方法,此方法只能列出path目录下的目录和文件,但是不能列出子目录下的文件和目录。 
    (1).使用listdir函数进行递归

!/bin/pythonimport osdef dir_view(path):     list_dir=os.listdir(path)    for dir in list_dir:         sub_path=os.path.join(path,dir)    #获取完整路径         if os.path.isdir(sub_path):             dir_view(path)

(2).使用os模块的walk方法,返回一个元组

!/bin/pythonimport osdef view_dir(path):     list_dir=os.walk(path)     #返回一个元组,包括3个元素,所有路径名,所有目录列表,文件列表     for root,dirs,files in list_dir:                 for d in dirs:                          print os.path.join(root,d)  #获取完整路径         for f ini files:                        print os.path.join(root,f)   #获取文件完整路径

python对于文件的操作比较简单,不像c那样比较复杂,对于同一个操作有几个不同的函数,例如对于文件的打开,C语言中有open函数,fopen函数等。

本文转自lnsaneLlinux博客51CTO博客,原文链接http://blog.51cto.com/lnsane784/2057037如需转载请自行联系原作者

Insane_linux
相关文章
|
2月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
332 1
|
2月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
199 1
|
2月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
300 1
|
3月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
1090 2
|
2月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
177 4
|
2月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
|
3月前
|
JavaScript Java 大数据
基于python的网络课程在线学习交流系统
本研究聚焦网络课程在线学习交流系统,从社会、技术、教育三方面探讨其发展背景与意义。系统借助Java、Spring Boot、MySQL、Vue等技术实现,融合云计算、大数据与人工智能,推动教育公平与教学模式创新,具有重要理论价值与实践意义。
|
4月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
173 0
|
11月前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
293 8

推荐镜像

更多