专业编程基础技术教程

网站首页 > 基础教程 正文

python教程从基础到精通,第14课—文件I/O

ccvgpt 2024-12-25 10:42:52 基础教程 1 ℃

Hello,小伙伴们,五一好好休息了一番,想必大家学习更有热情了吧!

咱们的基础课程差不多要结业啦,还有最后的两章,先来为我们自己庆祝一下吧^p^

python教程从基础到精通,第14课—文件I/O

本章来学习文件的操作:读、写、修改、删除等,同时学习文件路径,。

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!

有什么问题可以关注我/私信我/加好友,让我们一起成长吧。

Tags:

最近发表
标签列表