python文件操作

文章目录

  • 文件
    • 基本文件操作
      • 什么是文件
      • 打开文件和关闭文件
        • 文件的相对路径和绝对路径
      • 文件基本操作
        • open()打开文件
        • close()关闭文件
      • 文件的读写
        • 读文件
        • 写文件

文件

基本文件操作

什么是文件

文件是存储在辅助存储器上的数据序列,可以包含任何数据内容。

文件有两种类型:文本文件和二进制文件

打开文件和关闭文件

文件的相对路径和绝对路径

绝对路径

就是真实的路径,是计算机中完整路径,必须准确,否则不能找到,起点是系统的根目录,也就是各个盘符

例如:C:/Users/123/Desktop/python

相对路径

文件相对于当前工作目录的路径(.\表示当前目录,…\表示当前目录的父目录)

通过os包处理路径:

  • os.path.abspath(path)返回path参数的绝对路径的字符串(相对路径转绝对路径)
  • os.path.isabs(path)如果参数是一个绝对路径,返回True,否则返回else
  • os.path.relpath(path, start)返回从start路径到path的相对路径的字符串,如果不提供start,将当前工作目录视为开始路径
  • os.path.diename(path)返回一个字符串,包含path参数最后一个斜杠之前的所有内容
  • os.path.basename(paht)返回一个字符串,包含path参数最后一个斜杠之前的所有内容
os.path.abspath('.')  #'D:\\Environment\\python'
os.path.isabs(os.getcwd()) #True
os.path.relpath('D:\\Environment\\python',"D:\Code") #'..\\Environment\\python'
path = 'D:\\Environment\\python'
os.path.basename(path)#'python'
os.path.dirname(path)#'D:\\Environment'

文件基本操作

open()打开文件

python中使用open函数打开文件,open的语法如下:
<变量名> = open(<文件名>, <打开模式>, <编码类型>)

第三个编码类型可以不写,默认utf-8,第二个打开模式不写默认以只读方式打开。

文件的打开模式如下:

模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

close()关闭文件

使用close关闭文件,语法如下:

<变量名>.close

实例

f = open("test.txt", "r") #使用相对路径
print(f.read())  #读取文本文件
f.close()  #关闭文件

文件的读写

读文件

方法 描述
.readall() 读取整个文件内容,返回一个字符串或者字节流
.read(size=-1) 从文件中读取整个文件内容,如果给定参数,读取前size个字节的字符串或字节流
.readline(size=-1) 从文件中读取一行内容,如果给定参数,读取前size个字节的字符串或字节流
.readlines(hint=-1) 从文件中读取所有行,如果给定参数,读取前hint行
f = open("test.txt", "r+", encoding="utf-8") #用r+方式打开,可读可写
print("read:", f.read())
f.seek(0)  #将文件指针移动到文件开头
print("readline:", f.readline())
f.seek(0)  #将文件指针移动到文件开头
print("readlines:", f.readlines())
f.close()   #将文件指针移动到文件开头
#结果:
read: hello
北京
上海
广州
深圳
readline: hello

readlines: ['hello\n', '北京\n', '上海\n', '广州\n', '深圳']

这里每读一次文件之后要将文件指针移动到开头,以方便下次读文件,关于文件指针后面会有。

写文件

方法 描述
.write(s) 向文件写入一个字符串或字节流
.writelines(lines) 将一个元素全为字符串的列表写入文件
f = open("test.txt", "w+", encoding="utf-8")  #以w+形式打开文件。原文件内容会被清空
f.write("chongqing")
f.write('\n')     #写入一个换行
s = ["A", "B", "C"]
f.writelines(s)
f.close()
#test文件内容:
chongqing
ABC

容会被清空
f.write(“chongqing”)
f.write(’\n’) #写入一个换行
s = [“A”, “B”, “C”]
f.writelines(s)
f.close()
#test文件内容:
chongqing
ABC


你可能感兴趣的:(python,python)