详解Python常用标准库之os模块与shutil模块

目录
  • 系统模块
    • 常用方法
    • 常用属性
    • 文件操作
  • 路径模块
  • 文件复制移动模块(文件操作)
    • copyfileobj -- 复制文件(内容)
    • copyfile -- 复制文件(内容)
    • copymode -- 复制文件(权限)
    • copystat -- 复制文件(除了内容)
    • copy & copy2 -- 复制文件
    • copytree -- 迭代复制文件夹中的所有
    • rmtree -- 迭代删除文件夹(即使文件夹中有文件)
    • move -- 移动文件或文件夹

系统模块

import os

系统模块用于对系统进行操作。

常用方法

os模块的常用方法有数十种之多,本文中只选出最常用的几种,其余的还有权限操作、文件的删除创建等详细资料可以参考官方文档。

system -- 执行系统命令

参数的数据类型是字符串格式,内容是系统指令。执行时,直接返回系统输出。

import os

os.system('ifconfig')  # Linux系统shell命令
os.system('ipconfig')  # Windows系统dos命令

popen -- 执行系统命令

在使用system执行系统命令的时候,发现在windows系统下执行命令时,中文字符发生了乱码!这是因为windows为减少占用,对中文系统使用GB格式编码,而python中默认使用的UTF-8编码,编码不兼容导致了乱码问题。

popen也可以执行系统指令,但是和system的工作方式不一样。

popen执行系统指令之后返回对象,通过内置方法read读出字符串,这个过程中read方法自动的将其它编码转换成为了UTF-8格式,所以popen相比system有更高的可读性和兼容性。

而在实际的使用过程中,发现popen不存在阻塞,即在执行一些长时间系统任务的时候,不会等待系统任务结束,python代码就会继续执行,在某些场景下会导致问题的出现。比如在我的一个场景中,要将一个文件夹中的文件删除,之后在重写一份文件,使用popen导致文件还没有删除,而代码继续执行使新文件已经写好,而这个时候popen又将我新写的文件删除,导致我的程序在后续出现bug。所以,如果没有可读性的要求,我建议优先使用system方法。

import os

obj = os.popen('ipconfig')
res = obj.read()
print(res)

listdir -- 获取指定文件夹中的所有文件

获取指定文件夹中的所有文件(包括文件和文件夹),返回文件的名称,以列表的形式返回,默认情况为当前路径。

import os

# 默认为当前路径
files = os.listdir()
print(files)

# 相对和绝对路径都可以使用
files = os.listdir('C:')
print(files)

walk -- 递归遍历目录

递归遍历指定目录,包括其所有的子目录,返回一个迭代器对象。迭代器每次返回一个元组,元组为三个元素:

  • 第一个元素为字符串,表示当前目录路径;
  • 第二个元素为列表,表示当前目录下的所有文件夹名(不包括子目录中的);
  • 第三个元素为列表,表示当前遍历目录中的所有文件名(不包括子目录中的);
主要参数 含义
top 指定目录;
topdown 正序遍历还是倒序遍历,默认为True(正序);

请看下例,目录结构如下:

import os

path = r'C:\Users\MSR\Desktop\test'

# 正序遍历
res = os.walk(path)  # 返回迭代器
for i in res:
    print(i)
r"""
('C:\\Users\\MSR\\Desktop\\test', ['1', '2'], ['root.txt'])
('C:\\Users\\MSR\\Desktop\\test\\1', ['111'], ['1.txt'])
('C:\\Users\\MSR\\Desktop\\test\\1\\111', [], ['11.txt'])
('C:\\Users\\MSR\\Desktop\\test\\2', [], ['2.txt'])
"""

# 倒序遍历(优先展示最深子目录)
res = os.walk(path, topdown=False)
for i in res:
    print(i)
r"""
('C:\\Users\\MSR\\Desktop\\test\\1\\111', [], ['11.txt'])
('C:\\Users\\MSR\\Desktop\\test\\1', ['111'], ['1.txt'])
('C:\\Users\\MSR\\Desktop\\test\\2', [], ['2.txt'])
('C:\\Users\\MSR\\Desktop\\test', ['1', '2'], ['root.txt'])
"""

getcwd -- 获取当前工作路径

import os

# 获取当前的工作路径
dir_path = os.getcwd()
print(dir_path)  # E:\0-project\python\test

# 获取当前文件的路径
file_path = __file__  # 使用内置属性__file__获取
print(file_path)  # E:/0-project/python/test/test3.py

注意:getcwd()获取的使用当前工作路径,__file__是获取当前文件的路径

对于这个注意事项,大家一定要铭记于心,因为我被人欺骗了,当然这应该算是pycharm的坑吧!

注意了,文件的所在路径和工作路径是不相同的,文件的所在路径就是在系统中的这个脚本文件实实在在的地址,如果这个文件在C:\下,那么在任何的情况下这个文件的所在路径都是C:\;而工作路径不同,如果我们在C:\下执行这个python文件,那么我们的工作路径就是C:\,如果我们是在D:\下执行,那么我们的工作路径就是D:\,这就是文件所在地址和工作地址的区别,但是在一般情况下,我们执行文件都是在文件的所在地址执行的,所以大部分的时候文件所在路径和当前工作路径都是相同的。

可我在最开始学习这个方法的时候,我的老师教我说getcwd()的作用是获取文件的所在路径,那么是什么让我一直以为getcwd()的作用是获取文件的所在路径呢?是老师教给我的……感觉这个老师很不靠谱?那么老师怎么没有发现其中的含义呢?我怎么又一直深信不疑呢?我觉得这个一定是要pycharm来背锅了!我们在学习的时候一般都是相信自己的实际操作的结果的,我们执行的结果是什么,反复那么几次,我们的印象就会加深!

然后今天2021年12月7日20:58:09我在给公司的项目写一个启动脚本,目的是为了避免使用繁琐的命令去启动关闭项目,那么我在写的时候为了能够在系统的任何一个地方都是可以使用这个脚本,所以将命令中的各种路径全部写为绝对路径,我们系统工程师对绝对路径是非常熟练的!但是在我写好使用的时候就发现程序根本就启动不起来,已启动就死掉了,我就开始找原因,后来我发现在程序的目录下启动就没有问题,在其它的地址启动就有问题,我就意识到这是路径的错误。当然我们是有日志的,我看日志说是配置文件相关的地方出现了错误,我一看,就很好奇,配置文件是在程序的目录中的,读取的时候使用相对路径来获取,但是却没有读到文件,但是我检查之后文件是存在的!那么这个问题就很明显了,工作路径出了问题。

但是我还疑惑,为什么会影响到相对路径吗?然后我就测试了getcwd,发现果然如此,getcwd返回的不是文件的所在地址而是当前所在的工作地址,这个时候我还不死心,因为当时老师说的不是这样,所以我以为是linux和windows的差异,所以我就咋爱windows中又测试了一遍,发现还是一样的。那么我就又疑惑了,怎么在pycharm中,工作路径始终都是文件的所在路径呢?然后我就发现原来pycharm中可以指定文件的工作路径,而且默认将当前的文件路径作为工作路径使用。

然后我看文档介绍:Return a unicode string representing the current working directory.,emmm估计当时老师也是被pycharm坑了吧。所以大家以后如果想要在程序中固定工作路径,可以在启动文件中使用__file__获取,或者使用os.chdir方法。

然后最后还是在强调一下:工作路径会影响到相对路径的使用,但是不会影响到sys.pathpython的环境变量。

chdir -- 修改当前工作路径

之前我们有学过很多的函数,他们在涉及到路径的时候,一般默认情况都是当前脚本文件所在的目录(比如刚才的listdirgetcwd),如果将文件的默认工作路径修改,就会影响到其它的一些功能,比如说我们导入文件使用相对路径等,所以,谨慎使用。

import os

# 在修改默认工作路径前使用
print(os.getcwd())  # E:\0-project\python\test

# chdir 修改当前文件工作的默认路径
os.chdir('C:')

# 在修改工作路径后使用
print(os.getcwd())  # C:\

access -- 测试权限

用于测试一个指定路径或者文件的权限,返回True或者False。

语法:os.access(path, mode)

必要参数为path和mode,分别表示路径和测试的权限类型。

mode 说明
os.F_OK 是否存在;
os.R_OK 是否可读;
os.W_OK 是否可写;
os.X_OK 是否可执行;

urandom -- 随机字节对象

返回包含适合加密使用的随机字节的bytes对象。

import os

# 参数为字节长度
key = os.urandom(1)
print(key, len(key))
# b'\x92' 1

key = os.urandom(5)
print(key, len(key))
# b'\xde\x05/lh' 5

getpid&getppid -- 获取进程和父进程

getpid用于返回当前程序(脚本文件)的进程ID,getppid用于返回当前程序(脚本文件)的父进程ID。

# 获取进程唯一ID(PID)
import os

# getpid 返回当前进程的ID
print(os.getpid())  # 10784

# getppid 返回父进程的ID
# 如果父进程已退出,Windows计算机仍将运行返回其id;其他系统将返回“init”进程的id;
print(os.getppid())  # 16468

cpu_count -- 获取CPU核心数(逻辑)

import os

print(os.cpu_count())

"""
结果:
8
"""

常用属性

enciron -- 操作环境变量

import os

#  获取系统的所有环境变量
ev_var = os.environ
print(ev_var)

# 获取系统指定的环境变量
path_ev_var = os.environ['PATH']
print(path_ev_var)

# 添加环境变量
os.environ['PATH'] += r':/home/msr'  # Linux使用冒号分隔
os.environ['PATH'] += r';C:\Users\MSR'  # Windows使用分号分隔

# 其实可以看到,环境变量其实就是一个特殊的字典,修改环境变量就是在操作一个字典数据而已

name & sep & linesep

import os

# name 获取系统标识(Linux ->posix   windows -> nt)
print(os.name)  # nt

# sep 获取路径分隔符号
print(os.sep)  # \

# linesep 获取系统的换行符号
print(repr(os.linesep))  # '\r\n'

文件操作

mknod & remove -- 新建&删除文件

windows系统不支持此方法。

import os

os.mknod('test.txt')
os.remove('test.txt')

mkdir & rmdir -- 创建&删除文件夹

import os

os.mkdir('test_dir')
os.rmdir('test_dir')

rename -- 重命名文件或文件夹

语法:rename(old_path, new_path)

import os
os.rename('test.txt', 'hahaha.txt')

makedirs & removedirs -- 迭代创建&删除文件夹

import os

# 迭代创建文件夹
os.makedirs('a/b/c/d/e')
# 迭代删除文件夹(文件夹中存在文件,则该文件夹不删除)
os.removedirs('a/b/c/d/e')

路径模块

import os.path

路径模块也是系统模块中的一部分。

basename -- 返回路径中的文件名部分

import os.path

# 该路径不一定真实存在
file_path = r'..\学习笔记\day1笔记.py'
file_name = os.path.basename(file_path)
print(file_name)  # day1笔记.py

dirname -- 返回路径中目录部分

import os.path

file_path = r'..\学习笔记\day1笔记.py'
dir_path = os.path.dirname(file_path)
print(dir_path)  # ..\学习笔记

split -- 将目录和文件名拆分成两部分

import os.path

file_path = r'..\学习笔记\day1笔记.py'
tuple_var = os.path.split(file_path)
print(tuple_var)  # ('..\\学习笔记', 'day1笔记.py')
print(type(tuple_var))  # 返回元组: <class 'tuple'>

join -- 将多个路径组合在一起

import os.path

path1 = 'abc'
path2 = '123'
path3 = 'main.py'

# 使用join组合
path = os.path.join(path1, path2, path3)
print(path)  # abc\123\main.py

# 也可以使用 os.sep
path = path1 + os.sep + path2 + os.sep + path3
print(path)  # abc\123\main.py

splitext -- 将文件名分为文件名和后缀名

import os.path

# 分开文件名
file_name = 'main.py'
res = os.path.splitext(file_name)
print(res)  # ('main', '.py')
print(type(res))  # <class 'tuple'>

# 分来完整路径
file_path = r'..\学习笔记\day1笔记.py'
res = os.path.splitext(file_path)
print(res)  # ('..\\学习笔记\\day1笔记', '.py')
print(type(res))  # <class 'tuple'>

# 也可以使用字符串内置方法 split 实现
res = file_path.split('.')
print(res)  # ['', '', '\\学习笔记\\day1笔记', 'py']
print(type(res))  # <class 'list'>

getsize -- 获取指定文件的大小

import os.path

# 获取指定文件的大小(单位:byte)
file_size_byte = os.path.getsize('test.txt')

getctime -- 获取文件的创建时间

获取文件的创建时间,返回时间戳。(windows有明确的创建时间,linux只有最后一次的修改时间。)

import os.path
import time

# 获取文件创建时间
stamp_time = os.path.getctime('./test.py')
print(stamp_time)  # 1613989768.3445127

# 配合 时间模块使用 获取时间
print(time.ctime(stamp_time))  # Mon Feb 22 18:29:28 2021

getmtime -- 获取文件的最后一次修改时间

import os.path
import time

# 获取文件最后一次修改时间
stamp_time = os.path.getmtime('./test.py')
print(stamp_time)  # 1614037683.1067748

# 配合 时间模块使用 获取时间
print(time.ctime(stamp_time))  # Tue Feb 23 07:48:03 2021

getatime -- 获取文件最后一次访问时间

import os.path
import time

# 获取文件最后一次访问时间
stamp_time = os.path.getatime('./test.py')
print(stamp_time)  # 1635590737.799415

# 配合 时间模块使用 获取时间
print(time.ctime(stamp_time))  # Sat Oct 30 18:45:37 2021

isdir & isfile & islink -- 检查路径类型

不检查路径是否真实存在。

import os.path

# 检查路径类型,返回布尔值:
    # 不是对应类型或没有相应文件 : False
    # 是对应类型:True

# isdir 检查路径是否是文件夹
res = os.path.isdir('test.txt')

# isfile 检查路径是否是文件
res = os.path.isfile('test.txt')

# islink 检查路径是否是链接
res = os.path.islink('test.txt')

isabs -- 检查路径是否是绝对路径

不检查路径是否真实存在

import os.path

# 检查windows路径
path = r'E:\小黄片'
res = os.path.isabs(path)
print(res)  # True

# windows系统检查Linux路径
path = r'/root/home'
res = os.path.isabs(path)
print(res)  # True

abspath -- 相对路径转成绝对路径

先检查一个路径是否是相对路径,是则将其转成绝对路径,反之不变。

转成绝对路径的规则是:以当前的工作路径为基准,根据相对路径中的相对级别,将对应级别的工作路径替换为原路径中的相对路径。

不检查路径是否真实存在。

import os.path

# 绝对路径不改变
path = r'E:\学习资料'
new_path = os.path.abspath(path)
print(new_path)  # E:\学习资料

# 相对路径转成绝对路径
path = r'..\学习资料'
new_path = os.path.abspath(path)
print(new_path)  # E:\0-project\python\学习资料

# 根据级别自动转换
path = r'..\..\学习资料'
new_path = os.path.abspath(path)
print(new_path)  # E:\0-project\学习资料

# 如果相对的级别过多,就以根目录为准(不会报错)
path = r'..\..\..\..\..\..\..\..\..\..\学习资料'
new_path = os.path.abspath(path)
print(new_path)  # E:\学习资料

exists -- 检查路径是否真实存在

检查路径是否真实存在,返回布尔值。

import os.path

# 检查指定路径是否存在
path = r'E:\小黄片'
res = os.path.exists(path)
print(res)  # False

文件复制移动模块(文件操作)

import shutil

用于对文件进行操作。

获取文件信息,获取文件信息,见系统模块。

copyfileobj -- 复制文件(内容)

只复制文件的内容,通过文件IO操作,将一个文件的对象复制到另一个文件对象当中,因为需要在文件IO对象中操作,所以不推荐使用。

语法:copyfileobj(fsrc, fdst, length=16*1024)

copyfileobj(被复制文件对象,新文件对象,一次性读取字符数量。)

import shutil

with open('test.txt', 'r', encoding='UTF-8') as fp1 :
   with open('test2.txt', 'w', encoding='UTF-8') as fp2 :
      shutil.copyfileobj(fp1, fp2)

copyfile -- 复制文件(内容)

底层调用copyfileobj,使用方便快捷,所以推荐使用。

语法:copyfile(被复制文件路径, 新文件路径)

import shutil
shutil.copyfile('test.txt', 'test2.txt')

copymode -- 复制文件(权限)

仅复制文件的权限,不复制文件的内容(被赋值权限的文件必须存在),语法和copyfile相同。

import shutil
shutil.copymode('test.txt', 'test.txt')

copystat -- 复制文件(除了内容)

复制文件的所有的状态信息,包括各种日期、权限……就是没有内容。

import shutil
shutil.copystat('test.txt', 'test.txt')

copy & copy2 -- 复制文件

import shutil

# 复制文件内容和权限
shutil.copy('test.txt', 'test.txt')
# 完整复制整个文件(包括状态、权限、内容……)
shutil.copy2('test.txt', 'test.txt')

copytree -- 迭代复制文件夹中的所有

import shutil
shutil.copytree('../学习笔记', '../学习笔记备份')

rmtree -- 迭代删除文件夹(即使文件夹中有文件)

import shutil
shutil.rmtree('..\小黄片')

move -- 移动文件或文件夹

import shutil
shutil.move('D:\学习资料', 'C:\我的心血')

以上就是详解Python常用标准库之os模块与shutil模块的详细内容,更多关于Python os模块 shutil模块的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python中os和shutil模块实用方法集锦

    复制代码 代码如下: # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\'os.name 字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是 'posix'os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径os.getenv() 获取一个环境变量,如果没有返回noneos.putenv(key, value) 设置一个环境变量值os.listdir(path) 返回指定目录

  • Python中os模块的实例用法

    1.说明 os.path.exists():用于判断某个路径(文件或文件夹)是否存在,若存在则返回True,若不存在则返回False. os.makedirs():用于创建文件夹.传入所欲创建的文件夹的路径即可,没有返回值.值得一提的是,这个函数可以实现目录的递归创建,也就是说如果所传入的路径中,倒数第二级的目录也不存在,那么就会先创建该级目录,然后在在目录下创建所欲创建的目录,依此类推. os.path.basename():传入一个文件的路径,返回该文件的文件名. os.path.dirna

  • Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析

    本文实例讲述了Python3.5内置模块之os模块.sys模块.shutil模块用法.分享给大家供大家参考,具体如下: 1.os模块:提供对操作系统进行调用的接口 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu import os print(os.getcwd()) #获取当前的操作目录,即当前Python脚本工作的目录路径 #os.chdir("F:\\PythonCode\\day5\\test&quo

  • Python中shutil模块的使用详解

    简介:shutil 模块提供了一系列对文件和文件集合的高阶操作.特别是提供了一些支持文件拷贝和删除的函数,该模块主要强大之处在于其对文件的复制与删除操作更是比较支持好. 主要方法: 1.复制文件 2.复制文件夹 3.文件.文件夹移动 4.文件.文件夹改名 5.永久删除文件和文件夹 6.文件.文件夹进行打包 复制文件.并进行文件改名: import shutil # 复制文件.并进行文件改名 copy src_copy = r"D:\codes\ai2022\test1\a1.txt"

  • 浅谈Python中os模块及shutil模块的常规操作

    如下所示: #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表.这个列表以字母顺序. 它不包括 '.' 和'..' 即使它在文件夹中. #只支持在 Unix, Windows 下使用 import os, sys # 打开文件 path=r'C:\Users\Administrator.SKY-20180518VHY\Desktop\rx\ore' dirs = os.listdir( path ) print(dirs) # 输出所有文件和文件夹 for fil

  • Python 中 Shutil 模块详情

    一.什么是shutil shutil可以简单地理解为sh + util ,shell工具的意思.shutil模块是对os模块的补充,主要针对文件的拷贝.删除.移动.压缩和解压操作. 二.shutil模块的主要方法 1. shutil.copyfileobj(fsrc, fdst[, length=16*1024]) copy文件内容到另一个文件,可以copy指定大小的内容.这个方法是shutil模块中其它拷贝方法的基础,其它方法在本质上都是调用这个方法. 让我们看一下它的源码: def copy

  • Python之os模块案例详解

    OS模块 import os 1.返回操作系统类型 :posix 是linux操作系统,nt 是windows操作系统 print(os.name) print('Linux' if os.name == 'posix' else 'Windows') posix Linux 2.操作系统的详细信息 info = os.uname() print(info) print(info.sysname) print(info.nodename) posix.uname_result(sysname='

  • 详解Python常用标准库之os模块与shutil模块

    目录 系统模块 常用方法 常用属性 文件操作 路径模块 文件复制移动模块(文件操作) copyfileobj -- 复制文件(内容) copyfile -- 复制文件(内容) copymode -- 复制文件(权限) copystat -- 复制文件(除了内容) copy & copy2 -- 复制文件 copytree -- 迭代复制文件夹中的所有 rmtree -- 迭代删除文件夹(即使文件夹中有文件) move -- 移动文件或文件夹 系统模块 import os 系统模块用于对系统进行操

  • 详解Python常用标准库之时间模块time和datetime

    目录 time时间模块 time -- 获取本地时间戳 localtime -- 获取本地时间元组(UTC) gmtime -- 获取时间元组(GMT) mktime -- 时间元组获取时间戳 ctime -- 获取时间字符串 asctime -- 时间元组获取时间字符串 strftime -- 格式化时间 strptime -- 格式化时间 sleep -- 时间睡眠 perf_counter -- 时间计时 模拟进度条 程序计时 时间转换示意图 datetime时间模块 date类 time

  • Python常用标准库之os模块功能

    目录 系统相关 文件和目录操作 执行命令 模块导入方式: import os os模块是Python标准库中的一个用于访问操作系统相关功能的模块,os模块提供了一种可移植的使用操作系统功能的方法.使用os模块中提供的接口,可以实现跨平台访问.但是,并不是所有的os模块中的接口在全平台都通用,有些接口的实现是依赖特定平台的,比如linux相关的文件权限管理和进程管理. os模块的主要功能:系统相关.目录及文件操作.执行命令和管理进程 Ps:其中的进程管理功能主要是Linux相关的,此处不做讨论.

  • Python常用标准库详解(pickle序列化和JSON序列化)

    目录 常用的标准库 序列化模块 序列化和反序列化 使用场景 dumps & loads dump & load JSON序列化模块 使用场景 支持的数据类型 JSON和pickle的区别 序列化函数 json和pickle实际使用过程中的一些问题 pickle和json的区别总结 常用的标准库 序列化模块 import pickle 序列化和反序列化 把不能直接存储的数据变得可存储,这个过程叫做序列化.把文件中的数据拿出来,回复称原来的数据类型,这个过程叫做反序列化. 在文件中存储的数据只

  • 详解Python中pyautogui库的最全使用方法

    在使用Python做脚本的话,有两个库可以使用,一个为PyUserInput库,另一个为pyautogui库.就本人而言,我更喜欢使用pyautogui库,该库功能多,使用便利.下面给大家介绍一下pyautogui库的使用方法.在cmd命令框中输入pip3 install pyautogui即可安装该库! 常用操作 我们在pyautogui库中常常使用的方法,如下: import pyautogui pyautogui.PAUSE = 1 # 调用在执行动作后暂停的秒数,只能在执行一些pyaut

  • 详解python的xlwings库读写excel操作总结

    一.总结(点击显示或隐藏总结内容) 一句话总结: xlwings 是 Python 中操作Excel的一个第三方库,支持.xls读写,.xlsx读写,操作非常简单,功能也很强大 1.xlwings 中的逻辑:应用->工作簿->工作表->范围 对应的代码? 应用:一个应用(一个xlwings程序):app = xw.App(visible=True, add_book=False) 工作簿(book):excel文件(excel程序):wb = app.books.add() 工作表(sh

  • 详解python安装matplotlib库三种失败情况

    (可能只有最后一句命令有用,可能全篇都没用) (小白方法,可能只适用于本人情况) 安装matplotlib时,出现的三种失败情况 1.read timed out 一开始我在pycharm终端使用pip install matplotlib时,出现的是下图所示情况,大致情况是安装时间太长,所以当时我用了清华镜像,将原来的命令改成了pip install -i https://mirrors.ustc.edu.cn/pypi/web/simple/ matplotlib,速度是上来了,但是还是安装

  • 详解Python中第三方库Faker

    项目开发初期,为了测试方便,我们总要造不少假数据到系统中,尽量模拟真实环境. 比如要创建一批用户名,创建一段文本,电话号码,街道地址.IP地址等等. 平时我们基本是键盘一顿乱敲,随便造个什么字符串出来,当然谁也不认识谁. 现在你不要这样做了,用Faker就能满足你的一切需求. 1. 安装 pip install Faker 2. 简单使用 >>> from faker import Faker >>> fake = Faker(locale='zh_CN') >&

  • 详解Python常用的魔法方法

    一.python魔法方法 Python的魔法方法会在特定的情况下自动调用,且他们的方法名通常被双下划线包裹,之前我们学习的构造函数和析构函数就属于魔法方法 二.运算符重载 Python中同样有运算符重载,其实所有的运算符都是使用了对应的魔法方法来处理的对象的,魔法方法对应的操作符如下 我们来举一个简单的例子 class A: def __init__(self,x): self.x = x def __add__(self,other): return int(self.x)+int(other

  • 详解python中mongoengine库用法

    目录 一.MongoDB的安装与连接 二.MongoEngine模型介绍 2.1.ODM模型介绍 2.2.常见数据类型 2.3.数据类型通用参数 2.4.类属性meta常见配置项 2.5.文档的嵌套模型 三.添加数据 3.1.方式一 3.2.方式二:使用create()方法 四.查询数据 4.1.单个文档查询 4.2.条件查询 4.3.聚合统计 4.4.排序 4.5.分页处理 五.修改和删除数据 5.1.修改数据 5.2.删除数据 一.MongoDB的安装与连接 安装:pip install m

随机推荐