admin管理员组

文章数量:1037775

【python】模块导入

1. 模块导入

1.1. 同一目录下,模块导入

即:需要导入的模块 brother_test.py,和当前文件 main.py 是同一个文件夹下的情况。

相当于自己兄弟,是可以直接导入

代码语言:python代码运行次数:0运行复制
# 目录结构:
# project/
# ├── main.py
# └── brother_test.py  brother_test.py 中有类 Person,类中有函数 say_hello()

import brother_test  # 导入整个模块
weiyan = brother_test.Person()
weiyan.say_hello()

from brother_test import Person  # 导入模块中某个类
weiyan = Person()
weiyan.say_hello()

输出就不必贴出来了,不重要。

1.2. 子级目录下,模块导入

即:需要导入的模块 child_test.py,它的父级或者更高级目录,和当前文件 main.py 是同一个文件夹下的情况。

相当于兄弟的儿子,也就是侄子,可以通过兄弟那层关系导入

代码语言:python代码运行次数:0运行复制
# 目录结构:
# project/
# ├── main.py
# └── brother/child_test.py  child_test.py 中有类 Person,类中有函数 say_hello()

from brother import child_test  # 导入整个模块
weiyan = child_test.Person()
weiyan.say_hello()

from brother.child_test import Person  # 导入模块中某个类
weiyan = Person()
weiyan.say_hello()

1.3. 修改sys.path动态添加路径

如果需要导入其他一些结构比较复杂的模块,此时也许不能直接导入,就可以使用修改 sys.path 动态添加路径的方式。

它可以把要导入模块所在的相对路径或者绝对路径,添加到 sys.path 中,这样就可以导入模块。

关于 sys.path:它是 Python 的 sys 模块中的一个内置变量,它是一个列表,用于指定模块的搜索路径。当使用 import 导入某个模块时,python 会对 sys.path 列表中的路径逐一查找,如果找到了,就导入成功,如果找不到,就提示模块不存在。

我们可以先来看看 sys.path 里的内容是什么样:

代码语言:python代码运行次数:0运行复制
import sys  # 导入 sys 模块
print(type(sys.path))  # 查看 sys.path 数据格式
for path in sys.path:  # 打印 sys.path 中的内容
    print(path)

输入结果为:

代码语言:txt复制
<class 'list'>
E:\python_scripts\isli_tools\father
E:\python_scripts\isli_tools
E:\python_scripts\isli_tools\father
D:\python\python310.zip
D:\python\DLLs
D:\python\lib
D:\python
D:\python\lib\site-packages
D:\python\lib\site-packages\win32
D:\python\lib\site-packages\win32\lib
D:\python\lib\site-packages\Pythonwin

这些都是我在当前 main.py 模块中,可以直接导入的路径。我们可以通过给 sys.path 添加其他路径,来实现导入模块的目的。

传入相对路径:

代码语言:python代码运行次数:0运行复制
# 目录结构:
# project/
# ├── father / main.py
# └── uncle / cousin_test.py  cousin_test.py 中有类 Person,类中有函数 say_hello()

# 使用相对路径,导入整个模块
import sys
sys.path.append('../uncle')
import cousin_test

weiyan = cousin_test.Person()
weiyan.say_hello()

# 使用相对路径,导入模块中某个类
import sys
sys.path.append('../uncle')
from uncle.cousin_test import Person

weiyan = Person()
weiyan.say_hello()

传入绝对路径:

代码语言:python代码运行次数:0运行复制
# 目录结构:
# project/
# ├── father / main.py
# └── uncle / cousin_test.py  cousin_test.py 中有类 Person,类中有函数 say_hello()

# 使用相对路径,导入整个模块
import sys
sys.path.append(r'E:\python_scripts\isli_tools\uncle')
import cousin_test

weiyan = cousin_test.Person()
weiyan.say_hello()

# 使用相对路径,导入模块中某个类
import sys
sys.path.append(r'E:\python_scripts\isli_tools\uncle')
from uncle.cousin_test import Person

weiyan = Person()
weiyan.say_hello()

2. os 模块

os 模块主要是与操作系统之间的交互,查询和操作目录、文件等相关内容。

常用方法如下:

代码语言:python代码运行次数:0运行复制
import os

print(os.sep)  # 获取当前系统路径分隔符
print(os.name)  # 获取当前使用的工作平台,Windows返回nt,Linux和macOS返回posix
print(os.getcwd())  # 获取当前工作目录
print(os.listdir(r'E:\python_scripts\isli_tools\father\brother'))  # 获取指定目录下所有目录和文件名
print(os.path.dirname(r'E:\python_scripts\isli_tools\father\main.py'))  # 返回文件目录
print(os.path.basename(r'E:\python_scripts\isli_tools\father\main.py'))  # 返回文件名
print(os.path.getsize('main.py'))  # 获取文件大小
print(os.path.abspath('main.py'))  # 获取绝对路径
print(os.path.join(r'E:\python_scripts\isli_tools', 'base.py'))  # 连接目录与文件名,或者目录与目录
print(os.path.exists(r'E:\python_scripts\isli_tools\base\base.py'))  # 判断文件或目录是否存在,返回布尔值
print(os.path.isfile(r'E:\python_scripts\isli_tools\base\base.py'))  # 判断是否为文件,返回布尔值
print(os.path.isdir(r'E:\python_scripts\isli_tools'))  # 判断是否为目录
os.mkdir(r'E:\python_scripts\isli_tools\new_dir')  # 创建一个目录,如果已存在则不可创建
os.rename(r'E:\python_scripts\isli_tools\new_dir', r'E:\python_scripts\isli_tools\old_dir')  # 重命名文件或目录
os.rmdir(r'E:\python_scripts\isli_tools\old_dir')  # 删除一个空目录,如果里面有文件,无法删除
os.makedirs(r'E:\python_scripts\isli_tools\aaa\bbb\ccc')  # 创建多层递归空目录
os.removedirs(r'E:\python_scripts\isli_tools\aaa\bbb\ccc')  # 删除多层递归空目录
os.chdir(r'E:\python_scripts\isli_tools\uncle')  # 修改当前工作目录到指定目录中去

通过os模块,可以获取当前的绝对路径,并根据这个路径进行模块和目录的新增、修改、删除等操作。

备注:sys 模块主要是与解释器之间的交互,查询和操作相关参数和功能。

3. time 模块

time模块用于查询和处理日期和时间的相关函数。

常用方法如下:

代码语言:python代码运行次数:0运行复制
import time

print(time.time())  # 获取时间戳
print(time.localtime().tm_year)  # 获取年
print(time.localtime().tm_mon)  # 获取月
print(time.localtime().tm_mday)  # 获取日
print(time.localtime().tm_hour)  # 获取时
print(time.localtime().tm_min)  # 获取分
print(time.localtime().tm_sec)  # 获取秒
print(time.localtime().tm_wday)  # 获取星期几,0为星期一
print(time.localtime().tm_yday)  # 获取一年中第几天
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))  # 获取年月日时分秒
print(time.strftime('%A %w', time.localtime()))  # 获取星期几
print(time.strftime('%j', time.localtime()))  # 获取一年中第几天

输出结果为:

代码语言:txt复制
1742192051.5828044
2025
3
17
14
14
11
0
76
2025-03-17 14:14:11
Monday 1
076

4. json 模块

json模块是用于处理json数据的标准库,可以把python对象转为json字符串,也可以把json字符串转为python对象。

首先,json 模块最常用的是 dumps() 函数和 loads() 函数。

dumps:将python对象转为json格式的字符串。

loads:将json格式的字符串转为python对象

示例如下:

代码语言:python代码运行次数:0运行复制
import json

dict1 = {'name': 'WeiYan', 'age': '17', 'sex': '男'}

json1 = json.dumps(dict1)  # dumps,将python对象转为json格式的字符串
json2 = json.dumps(dict1, ensure_ascii=False)  # 参数 ensure_ascii=False 禁用 ASCII 转义,保留中文
json3 = json.dumps(dict1, indent=4)  # 参数 indent,每一层缩进多少空格
json4 = json.dumps(dict1, separators=(',', ':'))  # 参数 separators 自定义json分隔符,默认', ', ':'

dict2 = json.loads(json1)  # loads,将json格式的字符串转为python对象

print(json1)
print(json2)
print(json3)
print(json4)
print(dict2)

输出结果为:

代码语言:txt复制
{"name": "WeiYan", "age": "17", "sex": "\u7537"}
{"name": "WeiYan", "age": "17", "sex": "男"}
{
    "name": "WeiYan",
    "age": "17",
    "sex": "\u7537"
}
{"name":"WeiYan","age":"17","sex":"\u7537"}
{'name': 'WeiYan', 'age': '17', 'sex': '男'}

dump:将python对象转为json格式并写入文件

load:从文件中读取json数据并转为python对象

示例如下:

代码语言:python代码运行次数:0运行复制
import json

dict1 = {'name': 'WeiYan', 'age': '17', 'sex': '男'}

# dump,将python对象转为json格式并写入文件
with open(r'E:\python_scripts\isli_tools\json_file.txt', 'r+', encoding='utf-8') as f:
    json.dump(dict1, f, ensure_ascii=False)

# load,从文件中读取json数据并转为python对象
with open(r'E:\python_scripts\isli_tools\json_file.txt', 'r+', encoding='utf-8') as f:
    data = json.load(f)

print(data)

输出结果为:

代码语言:txt复制
{'name': 'WeiYan', 'age': '17', 'sex': '男'}

5. math 模块

math模块用于处理一些数学运算。

常用的函数如下:

代码语言:python代码运行次数:0运行复制
import math

num = -3.14
print(abs(num))  # 求绝对值
print(math.ceil(num))  # 向上取整
print(math.floor(num))  # 向下取整
print(max(2, 1, 3))  # 取最大值
print(min(2, 1, 3))  # 取最小值
print(pow(2, 3))  # 求幂,即2 ** 3
print(math.sqrt(9))  # 求平方根,即 9 ** 0.5

输出结果为:

代码语言:txt复制
3.14
-3
-4
3
1
8
3.0

6. print() 方法

print() 是非常实用的方法,了解几种常用的使用方法,可以更灵活的使用。

代码语言:python代码运行次数:0运行复制
words = 'WeiYan'
print('查看对象的内存地址:', id(words))  # 查看对象的内存地址
print('使用制表符添加空白:', 'Hello\t World')  # 使用制表符添加空白
print('使用换行符换行:', 'Hello\n World')  # 使用换行符换行

# 打印多个值时,使用sep参数连接
print('打印多个值时,使用sep参数连接:', 'H', 'e', 'l', 'l', 'o!', sep='-')

# 打印结束时,以'H'字符结尾,默认是换行符'\n'
print('打印结束时,以H字符结尾:', 'Hello World!', end='***')
print()
print('打印多行:', ''''111
222''')  # 打印多行

输出结果为:

代码语言:txt复制
查看对象的内存地址: 2094263253104
使用制表符添加空白: Hello	 World
使用换行符换行: Hello
 World
打印多个值时,使用sep参数连接:-H-e-l-l-o!
打印结束时,以H字符结尾: Hello World!***
打印多行: '111
222

以及:

代码语言:python代码运行次数:0运行复制
# 打印字符串并写入文件,如果文件不存在会自动创建
with open("print_file.txt", "w") as f:
    print(words, file=f)

# 打印时如果遇到'\r',会将光标移动到行首,所以这里虽然打印两个hello,但是最后只会显示第二个
print('\rhello1', end='')
print('\rhello2')

输出结果为:

代码语言:txt复制
hello2

同时还新生成了一个文件 print_file.txt,内容为 WeiYan

7. 文件读写

文件读、写,是数据处理的基础操作。

7.1. 文件读取

一般使用 open() 函数来读取文件,使用后需要通过 close() 函数关闭文件,否则可能导致内存持续占用、写入数据无效、对文件锁定导致后续无法对该文件进行操作等后果,所以读、写后,必须关闭文件。

代码语言:python代码运行次数:0运行复制
# 简单的文件读取,使用后需要关闭文件
f = open(r'E:\python_scripts\isli_tools\father\print_file.txt', 'r+', encoding='utf-8')
data1 = f.read(15)  # 读取全部内容,数字作为读取字节长度限制可不传,换行算1字符
data2 = f.readline(20)  # 读取一行内容,包括行尾的换行符
data3 = f.readlines(20)  # 读取所有行并存为列表
print('读取全部内容:', data1)
print('读取一行内容:', data2)
print('读取所有行并存为列表:', data3)

# 逐行读取,会从当前光标位置开始
for line in f:
    print(line.strip())

f.close()  # 关闭文件

输出结果为:

代码语言:txt复制
读取全部内容: 1111111111
2222
读取一行内容: 222222

读取所有行并存为列表: ['3333333333\n', '4444444444\n']
5555555555
6666666666
7777777777
8888888888
9999999999
0000000000

7.2. 文件写入

使用 open() 函数同样也可以写入文件,传入打开模式w时,是重写整个文件,传入打开模式a是,是在内容的末尾追加。

同样,使用后需要关闭文件

代码语言:python代码运行次数:0运行复制
# 重写模式
f = open(r'E:\python_scripts\isli_tools\father\print_file.txt', 'w', encoding='utf-8')
f.write("hello WeiYan.\n")
f.close()

# 追加模式
f = open(r'E:\python_scripts\isli_tools\father\print_file.txt', 'a', encoding='utf-8')
f.write("hello YouZi.")
f.close()

文件内容为:

代码语言:txt复制
hello WeiYan.
hello YouZi.

重写时,把文件中原本的内容清除后,写了 hello WeiYan.,并写入一个换行符,于是然后追加时,在第二行写了 hello YouZi.,且没有影响原本第一行的内容。

尤其注意的是,换行是需要手动输入换行符 \n 的

7.3. 使用 with 自动关闭文件

读写文件时,使用 with,这样在运行完 with 里的代码后,会自动关闭文件,不需要再手动关闭。

代码语言:python代码运行次数:0运行复制
# 使用 with 写入文件,不需要手动关闭
with open(r'E:\python_scripts\isli_tools\father\print_file.txt', 'w', encoding='utf-8') as f:
    f.write('及至始皇,奋六世之余烈,\n振长策而御宇内,吞二周注而亡诸侯,\n履至尊而制六合……威振四海。')

# 使用 with 读取文件,不需要手动关闭
with open(r'E:\python_scripts\isli_tools\father\print_file.txt', 'r', encoding='utf-8') as f:
    data = f.read()

文件内容为:

代码语言:txt复制
及至始皇,奋六世之余烈,
振长策而御宇内,吞二周注而亡诸侯,
履至尊而制六合……威振四海。

【python】模块导入

1. 模块导入

1.1. 同一目录下,模块导入

即:需要导入的模块 brother_test.py,和当前文件 main.py 是同一个文件夹下的情况。

相当于自己兄弟,是可以直接导入

代码语言:python代码运行次数:0运行复制
# 目录结构:
# project/
# ├── main.py
# └── brother_test.py  brother_test.py 中有类 Person,类中有函数 say_hello()

import brother_test  # 导入整个模块
weiyan = brother_test.Person()
weiyan.say_hello()

from brother_test import Person  # 导入模块中某个类
weiyan = Person()
weiyan.say_hello()

输出就不必贴出来了,不重要。

1.2. 子级目录下,模块导入

即:需要导入的模块 child_test.py,它的父级或者更高级目录,和当前文件 main.py 是同一个文件夹下的情况。

相当于兄弟的儿子,也就是侄子,可以通过兄弟那层关系导入

代码语言:python代码运行次数:0运行复制
# 目录结构:
# project/
# ├── main.py
# └── brother/child_test.py  child_test.py 中有类 Person,类中有函数 say_hello()

from brother import child_test  # 导入整个模块
weiyan = child_test.Person()
weiyan.say_hello()

from brother.child_test import Person  # 导入模块中某个类
weiyan = Person()
weiyan.say_hello()

1.3. 修改sys.path动态添加路径

如果需要导入其他一些结构比较复杂的模块,此时也许不能直接导入,就可以使用修改 sys.path 动态添加路径的方式。

它可以把要导入模块所在的相对路径或者绝对路径,添加到 sys.path 中,这样就可以导入模块。

关于 sys.path:它是 Python 的 sys 模块中的一个内置变量,它是一个列表,用于指定模块的搜索路径。当使用 import 导入某个模块时,python 会对 sys.path 列表中的路径逐一查找,如果找到了,就导入成功,如果找不到,就提示模块不存在。

我们可以先来看看 sys.path 里的内容是什么样:

代码语言:python代码运行次数:0运行复制
import sys  # 导入 sys 模块
print(type(sys.path))  # 查看 sys.path 数据格式
for path in sys.path:  # 打印 sys.path 中的内容
    print(path)

输入结果为:

代码语言:txt复制
<class 'list'>
E:\python_scripts\isli_tools\father
E:\python_scripts\isli_tools
E:\python_scripts\isli_tools\father
D:\python\python310.zip
D:\python\DLLs
D:\python\lib
D:\python
D:\python\lib\site-packages
D:\python\lib\site-packages\win32
D:\python\lib\site-packages\win32\lib
D:\python\lib\site-packages\Pythonwin

这些都是我在当前 main.py 模块中,可以直接导入的路径。我们可以通过给 sys.path 添加其他路径,来实现导入模块的目的。

传入相对路径:

代码语言:python代码运行次数:0运行复制
# 目录结构:
# project/
# ├── father / main.py
# └── uncle / cousin_test.py  cousin_test.py 中有类 Person,类中有函数 say_hello()

# 使用相对路径,导入整个模块
import sys
sys.path.append('../uncle')
import cousin_test

weiyan = cousin_test.Person()
weiyan.say_hello()

# 使用相对路径,导入模块中某个类
import sys
sys.path.append('../uncle')
from uncle.cousin_test import Person

weiyan = Person()
weiyan.say_hello()

传入绝对路径:

代码语言:python代码运行次数:0运行复制
# 目录结构:
# project/
# ├── father / main.py
# └── uncle / cousin_test.py  cousin_test.py 中有类 Person,类中有函数 say_hello()

# 使用相对路径,导入整个模块
import sys
sys.path.append(r'E:\python_scripts\isli_tools\uncle')
import cousin_test

weiyan = cousin_test.Person()
weiyan.say_hello()

# 使用相对路径,导入模块中某个类
import sys
sys.path.append(r'E:\python_scripts\isli_tools\uncle')
from uncle.cousin_test import Person

weiyan = Person()
weiyan.say_hello()

2. os 模块

os 模块主要是与操作系统之间的交互,查询和操作目录、文件等相关内容。

常用方法如下:

代码语言:python代码运行次数:0运行复制
import os

print(os.sep)  # 获取当前系统路径分隔符
print(os.name)  # 获取当前使用的工作平台,Windows返回nt,Linux和macOS返回posix
print(os.getcwd())  # 获取当前工作目录
print(os.listdir(r'E:\python_scripts\isli_tools\father\brother'))  # 获取指定目录下所有目录和文件名
print(os.path.dirname(r'E:\python_scripts\isli_tools\father\main.py'))  # 返回文件目录
print(os.path.basename(r'E:\python_scripts\isli_tools\father\main.py'))  # 返回文件名
print(os.path.getsize('main.py'))  # 获取文件大小
print(os.path.abspath('main.py'))  # 获取绝对路径
print(os.path.join(r'E:\python_scripts\isli_tools', 'base.py'))  # 连接目录与文件名,或者目录与目录
print(os.path.exists(r'E:\python_scripts\isli_tools\base\base.py'))  # 判断文件或目录是否存在,返回布尔值
print(os.path.isfile(r'E:\python_scripts\isli_tools\base\base.py'))  # 判断是否为文件,返回布尔值
print(os.path.isdir(r'E:\python_scripts\isli_tools'))  # 判断是否为目录
os.mkdir(r'E:\python_scripts\isli_tools\new_dir')  # 创建一个目录,如果已存在则不可创建
os.rename(r'E:\python_scripts\isli_tools\new_dir', r'E:\python_scripts\isli_tools\old_dir')  # 重命名文件或目录
os.rmdir(r'E:\python_scripts\isli_tools\old_dir')  # 删除一个空目录,如果里面有文件,无法删除
os.makedirs(r'E:\python_scripts\isli_tools\aaa\bbb\ccc')  # 创建多层递归空目录
os.removedirs(r'E:\python_scripts\isli_tools\aaa\bbb\ccc')  # 删除多层递归空目录
os.chdir(r'E:\python_scripts\isli_tools\uncle')  # 修改当前工作目录到指定目录中去

通过os模块,可以获取当前的绝对路径,并根据这个路径进行模块和目录的新增、修改、删除等操作。

备注:sys 模块主要是与解释器之间的交互,查询和操作相关参数和功能。

3. time 模块

time模块用于查询和处理日期和时间的相关函数。

常用方法如下:

代码语言:python代码运行次数:0运行复制
import time

print(time.time())  # 获取时间戳
print(time.localtime().tm_year)  # 获取年
print(time.localtime().tm_mon)  # 获取月
print(time.localtime().tm_mday)  # 获取日
print(time.localtime().tm_hour)  # 获取时
print(time.localtime().tm_min)  # 获取分
print(time.localtime().tm_sec)  # 获取秒
print(time.localtime().tm_wday)  # 获取星期几,0为星期一
print(time.localtime().tm_yday)  # 获取一年中第几天
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))  # 获取年月日时分秒
print(time.strftime('%A %w', time.localtime()))  # 获取星期几
print(time.strftime('%j', time.localtime()))  # 获取一年中第几天

输出结果为:

代码语言:txt复制
1742192051.5828044
2025
3
17
14
14
11
0
76
2025-03-17 14:14:11
Monday 1
076

4. json 模块

json模块是用于处理json数据的标准库,可以把python对象转为json字符串,也可以把json字符串转为python对象。

首先,json 模块最常用的是 dumps() 函数和 loads() 函数。

dumps:将python对象转为json格式的字符串。

loads:将json格式的字符串转为python对象

示例如下:

代码语言:python代码运行次数:0运行复制
import json

dict1 = {'name': 'WeiYan', 'age': '17', 'sex': '男'}

json1 = json.dumps(dict1)  # dumps,将python对象转为json格式的字符串
json2 = json.dumps(dict1, ensure_ascii=False)  # 参数 ensure_ascii=False 禁用 ASCII 转义,保留中文
json3 = json.dumps(dict1, indent=4)  # 参数 indent,每一层缩进多少空格
json4 = json.dumps(dict1, separators=(',', ':'))  # 参数 separators 自定义json分隔符,默认', ', ':'

dict2 = json.loads(json1)  # loads,将json格式的字符串转为python对象

print(json1)
print(json2)
print(json3)
print(json4)
print(dict2)

输出结果为:

代码语言:txt复制
{"name": "WeiYan", "age": "17", "sex": "\u7537"}
{"name": "WeiYan", "age": "17", "sex": "男"}
{
    "name": "WeiYan",
    "age": "17",
    "sex": "\u7537"
}
{"name":"WeiYan","age":"17","sex":"\u7537"}
{'name': 'WeiYan', 'age': '17', 'sex': '男'}

dump:将python对象转为json格式并写入文件

load:从文件中读取json数据并转为python对象

示例如下:

代码语言:python代码运行次数:0运行复制
import json

dict1 = {'name': 'WeiYan', 'age': '17', 'sex': '男'}

# dump,将python对象转为json格式并写入文件
with open(r'E:\python_scripts\isli_tools\json_file.txt', 'r+', encoding='utf-8') as f:
    json.dump(dict1, f, ensure_ascii=False)

# load,从文件中读取json数据并转为python对象
with open(r'E:\python_scripts\isli_tools\json_file.txt', 'r+', encoding='utf-8') as f:
    data = json.load(f)

print(data)

输出结果为:

代码语言:txt复制
{'name': 'WeiYan', 'age': '17', 'sex': '男'}

5. math 模块

math模块用于处理一些数学运算。

常用的函数如下:

代码语言:python代码运行次数:0运行复制
import math

num = -3.14
print(abs(num))  # 求绝对值
print(math.ceil(num))  # 向上取整
print(math.floor(num))  # 向下取整
print(max(2, 1, 3))  # 取最大值
print(min(2, 1, 3))  # 取最小值
print(pow(2, 3))  # 求幂,即2 ** 3
print(math.sqrt(9))  # 求平方根,即 9 ** 0.5

输出结果为:

代码语言:txt复制
3.14
-3
-4
3
1
8
3.0

6. print() 方法

print() 是非常实用的方法,了解几种常用的使用方法,可以更灵活的使用。

代码语言:python代码运行次数:0运行复制
words = 'WeiYan'
print('查看对象的内存地址:', id(words))  # 查看对象的内存地址
print('使用制表符添加空白:', 'Hello\t World')  # 使用制表符添加空白
print('使用换行符换行:', 'Hello\n World')  # 使用换行符换行

# 打印多个值时,使用sep参数连接
print('打印多个值时,使用sep参数连接:', 'H', 'e', 'l', 'l', 'o!', sep='-')

# 打印结束时,以'H'字符结尾,默认是换行符'\n'
print('打印结束时,以H字符结尾:', 'Hello World!', end='***')
print()
print('打印多行:', ''''111
222''')  # 打印多行

输出结果为:

代码语言:txt复制
查看对象的内存地址: 2094263253104
使用制表符添加空白: Hello	 World
使用换行符换行: Hello
 World
打印多个值时,使用sep参数连接:-H-e-l-l-o!
打印结束时,以H字符结尾: Hello World!***
打印多行: '111
222

以及:

代码语言:python代码运行次数:0运行复制
# 打印字符串并写入文件,如果文件不存在会自动创建
with open("print_file.txt", "w") as f:
    print(words, file=f)

# 打印时如果遇到'\r',会将光标移动到行首,所以这里虽然打印两个hello,但是最后只会显示第二个
print('\rhello1', end='')
print('\rhello2')

输出结果为:

代码语言:txt复制
hello2

同时还新生成了一个文件 print_file.txt,内容为 WeiYan

7. 文件读写

文件读、写,是数据处理的基础操作。

7.1. 文件读取

一般使用 open() 函数来读取文件,使用后需要通过 close() 函数关闭文件,否则可能导致内存持续占用、写入数据无效、对文件锁定导致后续无法对该文件进行操作等后果,所以读、写后,必须关闭文件。

代码语言:python代码运行次数:0运行复制
# 简单的文件读取,使用后需要关闭文件
f = open(r'E:\python_scripts\isli_tools\father\print_file.txt', 'r+', encoding='utf-8')
data1 = f.read(15)  # 读取全部内容,数字作为读取字节长度限制可不传,换行算1字符
data2 = f.readline(20)  # 读取一行内容,包括行尾的换行符
data3 = f.readlines(20)  # 读取所有行并存为列表
print('读取全部内容:', data1)
print('读取一行内容:', data2)
print('读取所有行并存为列表:', data3)

# 逐行读取,会从当前光标位置开始
for line in f:
    print(line.strip())

f.close()  # 关闭文件

输出结果为:

代码语言:txt复制
读取全部内容: 1111111111
2222
读取一行内容: 222222

读取所有行并存为列表: ['3333333333\n', '4444444444\n']
5555555555
6666666666
7777777777
8888888888
9999999999
0000000000

7.2. 文件写入

使用 open() 函数同样也可以写入文件,传入打开模式w时,是重写整个文件,传入打开模式a是,是在内容的末尾追加。

同样,使用后需要关闭文件

代码语言:python代码运行次数:0运行复制
# 重写模式
f = open(r'E:\python_scripts\isli_tools\father\print_file.txt', 'w', encoding='utf-8')
f.write("hello WeiYan.\n")
f.close()

# 追加模式
f = open(r'E:\python_scripts\isli_tools\father\print_file.txt', 'a', encoding='utf-8')
f.write("hello YouZi.")
f.close()

文件内容为:

代码语言:txt复制
hello WeiYan.
hello YouZi.

重写时,把文件中原本的内容清除后,写了 hello WeiYan.,并写入一个换行符,于是然后追加时,在第二行写了 hello YouZi.,且没有影响原本第一行的内容。

尤其注意的是,换行是需要手动输入换行符 \n 的

7.3. 使用 with 自动关闭文件

读写文件时,使用 with,这样在运行完 with 里的代码后,会自动关闭文件,不需要再手动关闭。

代码语言:python代码运行次数:0运行复制
# 使用 with 写入文件,不需要手动关闭
with open(r'E:\python_scripts\isli_tools\father\print_file.txt', 'w', encoding='utf-8') as f:
    f.write('及至始皇,奋六世之余烈,\n振长策而御宇内,吞二周注而亡诸侯,\n履至尊而制六合……威振四海。')

# 使用 with 读取文件,不需要手动关闭
with open(r'E:\python_scripts\isli_tools\father\print_file.txt', 'r', encoding='utf-8') as f:
    data = f.read()

文件内容为:

代码语言:txt复制
及至始皇,奋六世之余烈,
振长策而御宇内,吞二周注而亡诸侯,
履至尊而制六合……威振四海。

本文标签: python模块导入