查看函数参数
操作之前给大家讲一个小技巧:如何查看函数的参数(因为python的底层源码是C语言并且不是开放的,也一直困扰着刚学习的我,这个参数叫什么名之类的看doc又总是需要翻译挺麻烦的)。
比如我们下面要说到的open函数
dir函数查看
dir()
函数可以列出对象的所有属性和方法。(了解就行不用深入)
python
# 使用 dir 查询函数有哪些属性和方法
print(dir(open))
'''
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__',
'__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__',
'__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
'''
# 紧接着使用 open上面查询出来的方法即可
print(open.__name__)
# 和直接单机open函数过去的doc没啥区别 不会出来详细的参数
print(open.__doc__)
help函数查看
help()
函数可以显示函数的详细文档,包括参数说明和用法(这个比较好用会常用)。
python
# 使用 help函数会出来详细的文档 最起码知道这个参数的名称 以及那些参数
help(open)
'''
截取部分
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
'''
inspect函数查看
inspect
模块可以用于获取函数的签名信息,包括参数列表和默认值(这个更好用也常用)。
python
# 获取 open 函数的签名
import inspect
signature = inspect.signature(open)
print(signature)
'''
只输出
(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
'''
具体支持参数查询:比如你会好奇encoding的参数有哪些?除了utf-8其他的支持什么?点击链接去查询python官网doc部分这个是encoding编码
文件
文件操作是Python编程中的基础技能之一。通过掌握这些基本操作,你可以轻松地读取、写入和处理文件,文件是以计算机硬盘为载体存储在计算机上的信息集合。
操作函数
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明
- file:文件路径
- mode:模式
- buffering:设置缓冲区大小
- encoding:编码
常见模式
模式字符 | 描述 | 文件存在时 | 文件不存在时 |
---|---|---|---|
'r' |
只读模式(默认模式)。 | 打开文件并从头读取。 | 抛出 FileNotFoundError 。 |
'w' |
写入模式。 | 清空文件内容并从头写入。 | 创建新文件。 |
'x' |
独占创建模式。 | 抛出 FileExistsError 。 |
创建新文件。 |
'a' |
追加模式。 | 在文件末尾追加内容。 | 创建新文件。 |
'b' |
二进制模式 (与其他模式组合使用,如 'rb' 或 'wb' )。 |
以二进制格式操作文件。 | 以二进制格式操作文件。 |
't' |
文本模式 (默认模式,与其他模式组合使用,如 'rt' 或 'wt' )。 |
以文本格式操作文件。 | 以文本格式操作文件。 |
'+' |
读写模式 (与其他模式组合使用,如 'r+' 或 'w+' )。 |
打开文件并允许读写。 | 打开文件并允许读写。 |
组合模式
模式组合 | 描述 | 文件存在时 | 文件不存在时 |
---|---|---|---|
'rb' |
二进制只读模式。 | 打开文件并读取二进制数据。 | 抛出 FileNotFoundError 。 |
'wb' |
二进制写入模式。 | 清空文件并写入二进制数据。 | 创建新文件。 |
'ab' |
二进制追加模式。 | 在文件末尾追加二进制数据。 | 创建新文件。 |
'r+' |
读写模式(文件必须存在)。 | 打开文件并允许读写。 | 抛出 FileNotFoundError 。 |
'w+' |
读写模式(清空文件内容)。 | 清空文件并允许读写。 | 创建新文件。 |
'a+' |
读写追加模式。 | 打开文件并允许读写,写入时追加到文件末尾。 | 创建新文件。 |
'rb+' |
二进制读写模式(文件必须存在)。 | 打开文件并允许读写二进制数据。 | 抛出 FileNotFoundError 。 |
'wb+' |
二进制读写模式(清空文件内容)。 | 清空文件并允许读写二进制数据。 | 创建新文件。 |
'ab+' |
二进制读写追加模式。 | 打开文件并允许读写二进制数据,写入时追加到文件末尾。 | 创建新文件。 |
读取文件
有三种方式读取文件:
-
read()
:读取整个文件内容。 -
readline()
:读取文件的一行。 -
readlines()
:读取所有行并返回一个列表。
注意第二个参数为r即read读取
python
# 文件操作
# read():读取整个文件内容。放在于当前目录下一致即可如果是其他路劲需要指定(我的文件中有中文所以需要指定编码格式为utf_8)写成UTF-8 utf-8 U8, UTF, utf8, cp65001都支持 在我写的文档链接
with open('python_test.txt', 'r',encoding='cp65001') as file:
content = file.read()
print(content)
'''
输出结果
这是第一行含有中文的python测试txt
这是第二行含有中文的python测试txt
这是第三行含有中文的python测试txt
'''
# readline():读取文件的一行。
with open('python_test.txt', 'r',encoding='cp65001') as file:
for line in file:
print(line.strip()) # 默认有换行符.strip()去除换行符
'''
输出结果
这是第一行含有中文的python测试txt
这是第二行含有中文的python测试txt
这是第三行含有中文的python测试txt
'''
# readlines():读取所有行并返回一个列表。
with open('python_test.txt', 'r',encoding='cp65001') as file:
lines = file.readlines() # ['这是第一行含有中文的python测试txt\n', '这是第二行含有中文的python测试txt\n', '这是第三行含有中文的python测试txt']
for line in lines:
print(line.strip())
'''
输出结果
这是第一行含有中文的python测试txt
这是第二行含有中文的python测试txt
这是第三行含有中文的python测试txt
'''
写入文件
注意写入以'w'模式打开文件会覆盖文件内容,如果文件不存在则会创建新文件
-
write():写入单行。
-
write
lines()
:写入多行。
注意第二个参数为w即write写
python
# write 写入单行
with open('python_test.txt', 'w',encoding='cp65001') as file:
file.write("测试啊这是我写入的一行代码") #
file.write("测试啊这是我写入的二行代码") # 会覆盖上面的代码
# writelines 写入多行
with open('python_test.txt', 'w',encoding='cp65001') as file:
file.writelines(["测试啊这是我写入的一行代码\n","测试啊这是我写入的二行代码"])
'''
输出结果
测试啊这是我写入的一行代码
测试啊这是我写入的二行代码
'''
追加内容
如果你想在文件末尾追加内容而不是覆盖文件,可以使用'a'
模式打开文件。
python
# 追加内容修改模式即可
with open('python_test.txt', 'a',encoding='U8') as file:
file.writelines(["\n测试啊这是我写入的一行代码\n","测试啊这是我写入的二行代码"])
'''
输出结果
测试啊这是我写入的一行代码
测试啊这是我写入的二行代码
'''
关闭文件
使用with
语句可以自动关闭文件,但如果你不使用with
语句,记得手动关闭文件。
python
# 不使用with需要手动关闭流 类似于java中的流处理
iofile = open('python_test.txt', 'r',encoding='utf-8')
print(iofile.read())
iofile.close()
删除文件
python
import os
# 删除文件
if os.path.exists('python_test.txt'):
# 补充创建的话是mkdir 改名的话也很好理解rename
os.remove('python_test.txt')
print('删除文件')
else:
print('文件不存在了')
处理二进制文件
对于二进制文件(如图片、视频等),你可以使用'rb'
或'wb'
模式来读取和写入。选对模式即可。
python
# 读取二进制文件
with open('image.png', 'rb') as file:
image_data = file.read()
# 写入二进制文件
with open('image2.png', 'wb') as file:
file.write(image_data)
补充os模块函数应用
函数名 | 功能描述 | 参数说明 | 返回值或行为 |
---|---|---|---|
os.getcwd() |
获取当前工作目录的路径。 | 无参数。 | 返回当前工作目录的绝对路径(字符串)。 |
os.chdir(path) |
改变当前工作目录到指定路径。 | path :目标目录的路径(字符串)。 |
无返回值。如果路径不存在或不可访问,抛出 FileNotFoundError 或 OSError 。 |
os.listdir(path) |
返回指定目录下的所有文件和子目录的列表。 | path :目标目录的路径(字符串)。默认为当前目录(. )。 |
返回一个包含文件和目录名称的列表(列表)。如果路径无效,抛出 OSError 。 |
os.mkdir(path) |
创建单级目录。 | path :要创建的目录路径(字符串)。 |
无返回值。如果目录已存在或路径无效,抛出 FileExistsError 或 OSError 。 |
os.makedirs(path) |
递归创建多级目录。 | path :要创建的目录路径(字符串)。 |
无返回值。如果目录已存在或路径无效,抛出 FileExistsError 或 OSError 。 |
os.rmdir(path) |
删除单级空目录。 | path :要删除的目录路径(字符串)。 |
无返回值。如果目录非空或路径无效,抛出 OSError 。 |
os.removedirs(path) |
递归删除多级空目录。 | path :要删除的目录路径(字符串)。 |
无返回值。如果目录非空或路径无效,抛出 OSError 。 |
os.remove(path) |
删除指定文件。 | path :要删除的文件路径(字符串)。 |
无返回值。如果文件不存在或路径无效,抛出 FileNotFoundError 或 OSError 。 |
os.rename(src, dst) |
将文件或目录从 src 重命名为 dst 。 |
src :源文件或目录路径(字符串)。 dst :目标文件或目录路径(字符串)。 |
无返回值。如果路径无效或目标已存在,抛出 OSError 。 |
os.stat(path) |
获取文件或目录的状态信息。 | path :目标文件或目录路径(字符串)。 |
返回一个 os.stat_result 对象,包含文件大小、修改时间等信息。 |
os.system(command) |
在子 shell 中执行系统命令。 | command :要执行的命令(字符串)。 |
返回命令的退出状态码(整数)。通常 0 表示成功,非 0 表示失败。 |