网站首页 > 基础教程 正文
Hello,小伙伴们,五一好好休息了一番,想必大家学习更有热情了吧!
咱们的基础课程差不多要结业啦,还有最后的两章,先来为我们自己庆祝一下吧^p^
本章来学习文件的操作:读、写、修改、删除等,同时学习文件路径,。
1、Python的文件路径
1.1、常用路径操作方法
l 查找处理文件要调用os库,和openpyxl一样,先用import 导入。
l 得到指定文件路径:os.path.dirname(带路径文件名)
l 得到当前文件名:os.path.dasename(带路径文件名)
l 判断文件路径是否存在:os.path.exists(带路径文件名)
l 获得指定文件夹下所有文件:print(os.listdir(文件夹路径))
l 获得文件后缀:os.path.splitext(文件名)
l 拼接路径和文件名:os.path.join(路径,文件名)
l 创建新的目录:os.mkdir("newdir")
l 改变当前的目录:os.chdir("newdir")
l 删除目录,目录名称以参数传递:os.rmdir('dirname')
File 模块: 提供了操作文件的一系列方法。
OS 模块: 提供了处理文件及目录的一系列方法。
示例代码:
import os
from os import path
myfl= r'e:\python\删除最小值.xlsx'
print(path.abspath(myfl)) #e:\python\删除最小值.xlsx,获得绝对全路径
print(path.dirname(myfl)) #e:\python,获得文件所在文件夹
print(path.basename(myfl)) #删除最小值.xlsx,获得文件名
print(path.exists(myfl)) #False,判断文件在不在
print(path.splitext(myfl)) #('e:\\python\\删除最小值', '.xlsx')
print(path.splitext(myfl)[1]) #.xlsx,获得文件后缀名
print(path.join('e:\python','汇总.xlsx')) #e:\python\汇总.xlsx,路径拼接
curdir=os.getcwd()
print(curdir) #D:\python\works,当前工作目录
print(os.listdir(curdir)) #打印当前目录下所有文件名
os.mkdir("new_dir") #在当前目录下,创建新目录new_dir
os.mkdir(r"d:\new_dir") #在指定路径下,创建新目录new_dir
1.2、os模块文件目录方法汇总
os 模块提供了非常丰富的方法用来处理文件和目录。常用的方法如下表所示:
2、打开和关闭文件
2.1、打开文件open方法
你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。
语法:file object = open(file_name [, access_mode][, buffering])
各个参数的细节如下:
· file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
· access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
· buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
不同模式打开文件的完全列表:
2.2、关闭文件close方法
File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。
当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。
语法:fileObject.close()
3、File对象的属性
一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。
l file.closed:表示文件是否已关闭,如果已关闭则返回True,否则返回False。
l file.mode:表示文件打开的模式,例如'r'表示只读,'w'表示只写,'a'表示追加等。
l file.name:表示文件的名称。
l file.encoding:表示文件的编码方式。
l file.errors:表示文件读写时遇到的错误。
示例代码:
file = open('example.txt', 'w') # 创建一个文件对象
print(file.name) # 打印文件名,example.txt
print(file.mode) # 打印文件模式,w
print(file.closed) # 打印文件是否已关闭,False
file.close() # 关闭文件
print(file.closed) # 打印文件是否已关闭,True
4、文件的操作方法
4.1、往文件时写入内容write(),writelines()
write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
write()方法不会在字符串的结尾添加换行符('\n'):
fl = open("foo.txt", "w")
fl.write("Python is a good Language\nSure, Very good!\n")
fl.close() # 关闭打开的文件
#Python is a good Language
#Sure, Very good!
writelines()的例子:
fl = open("hello.txt", "a+")
fl.write("Python is a good Language\nSure, Very good!\n")
fl.writelines("Python is a good Language\nSure, Very good!\n")
fl.close() # 关闭打开的文件
用 with…as… 语句来操作
txtlst = ['Python 私教\n', 'Java 私教\n', 'C++ 私教\n']
with open('hello.txt','a+') as fl: #操作完成自动close文件
fl.writelines(txtlst)
4.2、读取文件内容
python有多种读取文件内容的方法,其中有read()、readline()、readlines()方法,先来看个实例:
hello = open('hello.txt', 'r', encoding='utf-8') 只读模式
num = 1
# 使用 for 循环,将读到的内容,打印出来
for con in hello:
print('第 %d 行:' % num, con)
num += 1
print(hello.tell()) #获取文件指针的位置
hello.seek(0) #将文本文件的指针,复位
print(hello.readline()) #读取第一行
print(hello.read()) #读取剩余的
hello.seek(10) #文件指针到10的位置
print(hello.readlines()) #读取全部内容,无视文件指针的位置
hello.close() #最后需要将文件关闭
4.3、文件定位
tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。
seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
实例:
fo = open("foo.txt", "r+")
str1 = fo.read(10)
print("读取的字符串是 : ", str1) #读取的字符串是 : Python is
position = fo.tell() #查找当前位置
print("当前文件位置 : ", position) #10
position = fo.seek(0, 0) #把指针再次重新定位到文件开头
str1 = fo.read(10)
print("重新读取字符串 : ", str1) #重新读取字符串 : Python is
fo.close()
4.4、文件重命名rename()
rename() 方法需要两个参数,当前的文件名和新文件名。
语法:os.rename(current_file_name, new_file_name)
import os
os.rename("test1.txt", "test2.txt") # 重命名文件test1.txt到test2.txt。
4.5、删除文件remove()
可以用remove()方法删除文件,需要提供要删除的文件名作为参数。
语法:os.remove(file_name)
import os
os.remove("test2.txt") # 删除一个已经存在的文件test2.txt
愉快学习的时光总是过得很快,一不小心又到结尾啦。
先来给自己一个奖励,双手举起,yeah!
有什么问题可以关注我/私信我/加好友,让我们一起成长吧。
猜你喜欢
- 2024-12-25 「万能Python」-15-文件处理 python 处理文件
- 2024-12-25 分享10个Python自动化脚本,解决日常问题
- 2024-12-25 Python 3 基础教程 - 文件 I/O python3.7文档
- 2024-12-25 最全Python基础知识总结 python基础100例
- 2024-12-25 Linux日常小技巧python脚本 python写linux脚本
- 2024-12-25 字符串跳舞,保姆级教程,利用python实现小姐姐跳代码舞
- 2024-12-25 Linux命令学习——rmdir命令 rm linux命令
- 2024-12-25 CMake个人理解和使用 cmake -wl
- 2024-12-25 Python文件系统:让你的文件操作变得更简单
- 2024-12-25 高效开发利器:深入学习Python标准库的实用技巧
- 最近发表
-
- Vue3+Bootstrap5项目初始化 vue 项目初始化
- 前端程序员不得不爱的bootstrap 前端 bom
- 保姆级软路由刷机+软路由OpenWRT入门设置,新手轻松搭建软路由
- 好东西!iOS 16.5 半越狱分屏功能,教你正确安装
- Python数据可视化Dash开源库Bootstrap之折叠列表Accordion
- 终于发布!iOS 16.5 越狱工具已发布,分屏插件有效
- 超爽!iOS 16.6.1 Bootstrap 半越狱更新,有通知
- 好玩!iOS 16.6.1 半越狱玩法,这插件真生效
- 来啦!iOS 16.6.1 nathanlr 半越狱,被迫公测体验
- iOS 17.0 Bootstrap 1.2.9 半越狱来啦!更新两点
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)