IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python 的文件操作 -> 正文阅读

[Python知识库]Python 的文件操作

一、python 中的文件对象

1、file 对象

文件对象不仅可以用来访问普通的磁盘文件,而且也可以访问任何其它类型抽象层面上的"文件"。 一旦设置了合适的"钩子",你就可以访问具有文件类型接口的其它对象,就好像访问的是普通文件一样。

(1)打开文件并创建 file 对象

open() 函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。模式和缓冲参数都是可选的,默认为只读模式打开文件。使用with即使发生错误可以关闭文件。
open() 成功执行并返回一个文件对象之后,所有对该文件的后续操作都将通过这个"句柄"进行

file object = open(file_name [, access_mode][, buffering])
with open(file_name [, access_mode][, buffering]) as f: 

各个参数的细节如下:
● file_name:是一个包含了你要访问的文件名的字符串值
● access_mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表,这个参数是非强制的,默认文件访问模式为只读(r)。
在这里插入图片描述
在这里插入图片描述
● buffering:如果buffering的值被设为0,就不会有寄存;如果buffering的值取1,访问文件时会寄存行;如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小;如果取负值,寄存区的缓冲大小则为系统默认。

(2)File 对象的属性

一个文件被打开后,会得到一个file对象,你可以得到有关该文件的各种信息。
以下是和file对象相关的所有属性的列表:
在这里插入图片描述

2、文件的读写操作

file 对象提供了一系列方法,能让我们的文件访问更轻松。

(1)write() 方法

write() 方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python 字符串可以是二进制数据,而不是仅仅是文字。write()方法不会在字符串的结尾添加换行符('\n')

fileObject.write(string); 

被传递的参数是要写入到已打开文件的内容。 例:

# 打开一个文件 
f = open("foo.txt", "w+",encoding='utf-8') 
f.write("可以 ,你做的很好!\n 6666\n")  
# 关闭打开的文件 
f.close() 

(2)read() 方法

read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

file Object.read([count]); 

被传递的参数是要从已打开文件中读取的字节计数
该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾
例:

# 打开一个文件 
f = open("foo.txt", "r+",encoding='utf-8') 
str = f.read(); 
print("读取的字符串是 : ", str)  
# 关闭打开的文件 
f.close() 

(3)readline()方法

readline() 方法读取打开文件的一行,包括行结束符,作为字符串返回。它有一个可选的 size 参数, 默认为 -1, 代表读至行结束符.,如果提供了该参数,那么在超过 size 个字节后会返回不完整的行。
readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。

# 打开一个文件
f = open("foo.txt", "r",encoding='utf-8') 
str = f.readline() 
print("读取的字符串是 : ", str)  
# 关闭打开的文件 
f.close() 

(4)readlines()方法

readlines() 会读取所有(剩余的)行,然后把它们作为一个字符串列表返回,列表中的一项表示文件的一行。它的可选参数 sizhint 代表返回的最大字节大小,如果它大于 0 ,那么返回的所有行应该大约有 sizhint 字节(可能稍微大于这个数字, 因为需要凑齐缓冲区大小)。

# 打开一个文件 
f = open("foo.txt", "r",encoding='utf-8') 
str = f.readlines() 
print("读取的字符串是 : ", str)  
# 关闭打开的文件 
f.close() 

3、文件定位操作

(1)tell() 方法

tell() 方法告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后。

(2)seek() 方法

seek(offset [,from])方法改变当前文件的位置Offset 变量表示要移动的字节数。From 变量指定开始移动字节的参考位置。如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

例:

# 打开一个文件
f = open("foo.txt", "r+", encoding='utf-8')
str = f.read(10);
print("读取的字符串是 : ", str)
 
# 查找当前位置
position = f.tell();
print("当前文件位置 : ", position)
 
# 把指针再次重新定位到文件开头
position = f.seek(0, 0);
str = f.read(10);
print("重新读取字符串 : ", str)
 
# 关闭打开的文件
f.close()

4、文件刷新与关闭

(1)flush() 方法

flush() 方法会直接把内部缓冲区中的数据立刻写入文件,而不是被动地等待输出缓冲区被写入

(2)close() 方法

close() 方法关闭文件来结束对它的访问。Python 垃圾收集机制也会在文件对象的引用计数降至零的时候自动关闭文件。
当一个文件对象的引用被重新指定给另一个文件时,Python 要关闭之前的文件。
良好的编程习惯要求在重新赋另个文件对象前关闭这个文件。如果你不显式地关闭文件,那么你可能丢失输出缓冲区的数据

二、对文件系统的访问:OS 模块

os 模块提供了多数操作系统的功能接口函数。当 os 模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,这时就离不了 os 模块。

1、文件信息

(1)getatime()

返回最近访问时间

(2)getctime()

返回文件创建时间

(3)getmtime()

返回最近文件修改时间

(4)getsize()

返回文件大小(以字节为单位)

2、文件操作

(1)remove() 方法

删除文件

(2)rename() 方法

重命名文件

(3)mpfile() 方法

创建并打开(‘w+b’)一个新的临时文件

(4)os.path.isfile(path) 方法

判断是否是一个文件,如果是则返回True,否则返回False;


print(os.path.isfile('abc'))
# True 
print(os.path.isfile('/test/qwe'))
# False

3、目录、文件夹的操作

所有文件都包含在各个不同的文件夹或目录下,不过Python也能轻松处理。

(1)getcwd() 方法

getcwd()方法显示当前的工作目录。

os.getcwd() 

(2)chdir() 方法

切换目录(路径)改变当前工作目录,通过一个文件描述符改变当前工作目录

import os 
os.chdir(r'/etc/sysconfig/') 
print(os.getcwd())
# /etc/sysconfig 

(3)mkdir() 方法

可以使用os模块的mkdir()方法在当前目录下创建新的目录。你需要提供一个包含了要创建的目录名称的参数。

os.mkdir("newdir")

(4)os.makedirs() 方法

生成一个多层递归目录

os.makedirs('/home/test/xuan') 

(5)rmdir()方法

rmdir()方法删除目录,参数传递目录名称。在删除这个目录之前,它的所有内容应该先被清除,若目录不为空则无法删除,报错

os.rmdir('dirname')

(6)os.removedirs() 方法

若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推;

os.removedirs('test/xuan')

(7)os.listdir()

显示指定目录下,所有的文件和子目录,包括隐藏文件;

import os 
dirs = os.listdir('/root') 
print(dirs)
['.bash_logout', '.bash_profile', '.cshrc', '.tcshrc', '.bashrc', 'full_stack', 'jf_blog', 'node-v8.9.4-linux-x64', '.bash_history', '.config', '.npm', '.pki', '.ssh', '.gitconfig', '.oracle_jre_usage', '.cache', '.python_history', 'douban', 'mysql57-community-release-el7-10.noarch.rpm', '.mysql_history', '.viminfo'] ```

4、查询

(1)os.path.exists(path)

判断路径是否存在,如果path存在,返回True;如果不存在,返回Flase;

import os 
print(os.path.exists('/test/123/abc'))
# True

(2)os.path.isdir(path)

判断是否是一个存在的目录;

import os 
print(os.path.isdir('/test/qwe'))
# True 
print(os.path.isdir('/test/abc'))
# False 

(3)isabs()

指定路径是否为绝对路径

(4)islink()

指定路径是否存在且为一个符号链接

(5)ismount()

指定路径是否存在且为一个挂载点

(6)samefile()

两个路径名是否指向同个文件

5、访问/权限

(1)access()

检验权限模式

(2)chmod()

改变权限模式

(3)chown()

改变 owner 和 group ID/功能相同, 但不会跟踪链接

(4)umask()

设置默认权限模式

6、分隔

(1)basename()

去掉目录路径, 返回文件名

(2)dirname()

去掉文件名, 返回目录路径

(3)os.path.join(path1,[path2],[path3])

将路径和文件名分为一个列表中的两个元素,将它们拼起来,若其中有绝对路径,则之前的path将会被删除;

print(os.path.join('/test/','hello.txt'))
# /test/hello.txt 
print(os.path.join('/test/123','hello.txt'))
# /test/123/hello.txt

(4)split()

返回 (dirname(), basename()) 元组

(5)splitdrive()

返回 (drivename, pathname) 元组

(6)splitext()

返回 (filename, extension) 元组

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:22:40  更:2021-08-10 13:23:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 1:19:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计