常用模块学习(三)
-
常用模块学习—random模块详解
程序中有很多地方需要用到随机字符,比如登录网站的随机验证码,通过random模块可以很容易生成随机字符串。
import random #randint 返回1-100之间的一个随机数,包括100 random.randint(1,100) #结果为:94 random.randint(1,100) #结果为:32 random.randint(1,100) #结果为:33 random.randint(1,100) #结果为:99 random.randint(1,100) #结果为:15 #randrange 返回1-100之间的一个随机数,不包括100 random.randrange(1,100) #结果为:20 random.randrange(1,100) #结果为:73 random.randrange(1,100) #结果为:77 #返回一个随机浮点数 random.random() #结果为:0.6091116957891122 random.random() #结果为:0.4522803836713838 #返回一个给定数据集合中的随机字符 random.choice('asd12341@#%$') #结果为:'@' random.choice('asd12341@#%$') #结果为:'d' random.choice('asd12341@#%$') #结果为:'#' random.choice('asd12341@#%$') #结果为:'3' #从多个字符中选取特定数量的字符 random.sample('adgs263467@#$',3) #结果为:['7', 'g', '4'] random.sample('adgs263467@#$',3) #结果为:['s', '3', '$'] random.sample('adgs263467@#$',3) #结果为:['#', '3', '@'] random.sample('adgs263467@#$',3) #结果为:['2', '6', 'g'] #生成随机字符串 import string string.digits #结果为:'0123456789' string.ascii_letters #结果为:'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' string.ascii_lowercase #结果为:'abcdefghijklmnopqrstuvwxyz' string.ascii_lowercase + string.digits #结果为:'abcdefghijklmnopqrstuvwxyz0123456789' string.punctuation #结果为:'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' s=string.ascii_lowercase + string.digits s #结果为:'abcdefghijklmnopqrstuvwxyz0123456789' random.sample(s,5) #结果为:['5', 'z', '8', 'd', '6'] random.sample(s,5) #结果为:['9', 'd', 'e', '8', 'i'] random.sample(s,5) #结果为:['1', 'm', 'p', 'c', '5'] ''.join(random.sample(s,5)) #结果为:'jpxvo' ''.join(random.sample(s,5)) #结果为:'su1gl' ''.join(random.sample(s,5)) #结果为:'uoc7k' ''.join(random.sample(s,5)) #结果为:'glrk0' #洗牌 d = list(range(100)) d #结果为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] random.shuffle(d) d #结果为:[22, 91, 42, 98, 18, 40, 96, 84, 73, 82, 49, 30, 81, 69, 78, 89, 5, 6, 83, 9, 0, 47, 35, 75, 79, 2, 95, 43, 53, 68, 93, 65, 21, 59, 85, 51, 8, 80, 90, 23, 62, 28, 97, 24, 27, 1, 39, 57, 3, 55, 94, 19, 77, 4, 88, 26, 72, 56, 34, 41, 31, 10, 36, 33, 58, 50, 20, 11, 38, 60, 46, 15, 29, 17, 52, 86, 61, 37, 54, 67, 70, 14, 7, 99, 66, 71, 13, 12, 45, 92, 16, 25, 64, 74, 63, 44, 48, 87, 76, 32]
-
常用模块学习—os 模块详解
import os #得到当前工作目录,即当前Python脚本工作的目录路径 print(os.getcwd()) #结果为:E:\Python\work\myFirstPro\第4章 #返回指定目录下的所有文件和目录名 print(os.listdir()) #结果为:['01—模块的种类和导入方法.py', '02—模块的导入路径.py', '03—开源模块的安装方式.py', '04—time 模块详解.py', '05—tatetime 模块详解.py', '06—random模块详解.py', '07—os 模块详解.py', 'mods', 'packages'] #函数用来删除一个文件 #print(os.remove('account.txt')) #结果为:None #删除多个目录 #print(os.removedirs(r'c:\python')) #检验给出的路径是否是一个文件 print(os.path.isfile('account1.txt')) #结果为:True #检验给出的路径是否是一个目录 print(os.path.isdir('mods')) #结果为:True #判断是否是绝对路径 print(os.path.isabs('E:\Python\work\myFirstPro\第4章')) #结果为:True #检验给出的路径是否真的存在 print(os.path.exists('E:\Python\work\myFirstPro\第4章')) #结果为:True #返回一个路径的目录名和文件名 print(os.path.split('01—模块的种类和导入方法.py')) #结果为:('', '01—模块的种类和导入方法.py') #分离扩展名: print(os.path.splitext('01—模块的种类和导入方法.py')) #结果为:('01—模块的种类和导入方法', '.py') #获取路径名 print(os.path.dirname('03—开源模块的安装方式.py')) #结果为: #获得绝对路径 print(os.path.abspath('03—开源模块的安装方式.py')) #结果为:E:\Python\work\myFirstPro\第4章\03—开源模块的安装方式.py #获取文件名 print(os.path.basename('E:\Python\work\myFirstPro\第4章')) #结果为:第4章 #运行shell命令 #print(os.system('df -h')) #Linux下执行命令正确返回0,不正确返回非0 #读取操作系统环境变量HOME的值 print(os.getenv('HOME')) #结果为:None #返回操作系统所有的环境变量 print(os.environ) #结果为:environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\TQTL\\AppData\\Roaming', 'CLASSPATH': '.;C:\\Program Files\\Java\\jdk1.6.0_35\\lib;C:\\Program Files\\Java\\jdk1.6.0_35\\lib\\tools.jar', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': 'DESKTOP-LRT82E2', 'COMSPEC': 'C:\\WINDOWS\\system32\\cmd.exe', 'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData', 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer', 'FPS_BROWSER_USER_PROFILE_STRING': 'Default', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\TQTL', 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.6.0_35', 'LOCALAPPDATA': 'C:\\Users\\TQTL\\AppData\\Local', 'LOGONSERVER': '\\\\DESKTOP-LRT82E2', 'MOZ_PLUGIN_PATH': 'D:\\programfiles\\pdf\\plugins\\', 'NUMBER_OF_PROCESSORS': '4', 'ONEDRIVE': 'C:\\Users\\TQTL\\OneDrive', 'OS': 'Windows_NT', 'PATH': 'C:\\Python37\\Scripts\\;C:\\Python37\\;C:\\Python27\\;C:\\Python27\\Scripts;C:\\Program Files (x86)\\Common Files\\NetSarang;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;D:\\programfiles\\SVN\\bin;C:\\Program Files\\Java\\jdk1.6.0_35\\bin;C:\\Program Files\\Java\\jdk1.6.0_35\\jre\\bin;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Users\\TQTL\\AppData\\Local\\Microsoft\\WindowsApps;', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 60 Stepping 3, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '3c03', 'PROGRAMDATA': 'C:\\ProgramData', 'PROGRAMFILES': 'C:\\Program Files', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'PROGRAMW6432': 'C:\\Program Files', 'PSMODULEPATH': 'C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules\\', 'PUBLIC': 'C:\\Users\\Public', 'PYCHARM_HOSTED': '1', 'PYCHARM_MATPLOTLIB_PORT': '57344', 'PYTHONIOENCODING': 'UTF-8', 'PYTHONPATH': 'C:\\JetBrains\\PyCharm 2018.2.1\\helpers\\pycharm_matplotlib_backend;E:\\Python', 'PYTHONUNBUFFERED': '1', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\WINDOWS', 'TEMP': 'C:\\Users\\TQTL\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\TQTL\\AppData\\Local\\Temp', 'USERDOMAIN': 'DESKTOP-LRT82E2', 'USERDOMAIN_ROAMINGPROFILE': 'DESKTOP-LRT82E2', 'USERNAME': 'TQTL', 'USERPROFILE': 'C:\\Users\\TQTL', 'VBOX_MSI_INSTALL_PATH': 'D:\\programfiles\\virtual\\', 'WINDIR': 'C:\\WINDOWS'}) #设置系统环境变量,仅程序运行时有效 print(os.environ.setdefault('HOME','/home/alex')) #结果为:/home/alex #给出当前平台使用的行终止符 print(os.linesep) #结果为: Windows使用'\r\n',Linux and MAC使用'\n' #指示你正在使用的平台 print(os.name) #结果为:nt 对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix' #重命名 print(os.renames('account1.txt','account2.txt')) #结果为:None #print(os.renames('account2.txt','account1.txt')) #结果为:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。 #创建多级目录 #print(os.makedirs(r'E:\\Python\\c\\d\\e')) #创建单个目录 #print(os.mkdir('test')) #获取文件属性: print(os.listdir('.')) #结果为:['.idea', 'file_flush_test.txt', 'f_flush_test.txt', 'pycharm-professional-2018.2.1.exe', 'python-2.7.15.amd64.msi', 'python-3.7.0-amd64.exe', 'work'] print(os.stat('file_flush_test.txt')) #结果为:os.stat_result(st_mode=33206, st_ino=7599824371189248, st_dev=345752004, st_nlink=1, st_uid=0, st_gid=0, st_size=14, st_atime=1535701004, st_mtime=1535701004, st_ctime=1535700853) #修改文件权限与时间戳 #print(os.chmod()) #获取文件大小 print(os.path.getsize('file_flush_test.txt')) #结果为:14 #结合目录名与文件名 print(os.path.join('Python','file_flush_test.txt')) #改变工作目录到dirname #print(os.chdir(dirname)) #获取当前终端的大小 print(os.get_terminal_size()) #杀死进程 #print(os.kill(10884,signal.SIGKILL))
-
常用模块学习—sys 模块详解
1 sys.argv 命令行参数List,第一个元素是程序本身路径 2 sys.exit(n) 退出程序,正常退出时exit(0) 3 sys.version 获取Python解释程序的版本信息 4 sys.maxint 最大的Int值 5 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 6 sys.platform 返回操作系统平台名称 7 sys.stdout.write('please:') #标准输出 , 引出进度条的例子, 注,在py3上不行,可以用print代替 8 val = sys.stdin.readline()[:-1] #标准输入 9 sys.getrecursionlimit() #获取最大递归层数 10 sys.setrecursionlimit(1200) #设置最大递归层数 11 sys.getdefaultencoding() #获取解释器默认编码 12 sys.getfilesystemencoding #获取内存数据存到文件里的默认编码
1 import sys 2 3 sys.argv 4 #结果为:['C:\\JetBrains\\PyCharm 2018.2.1\\helpers\\pydev\\pydevconsole.py', '59820', '59821'] 5 6 sys.exit() 7 #Process finished with exit code 0 8 9 sys.version 10 # 结果为:'3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]' 11 12 sys.maxsize 13 # 结果为:9223372036854775807 14 15 sys.path 16 # 结果为: 17 # ['C:\\JetBrains\\PyCharm 2018.2.1\\helpers\\pydev', 18 # 'C:\\JetBrains\\PyCharm 2018.2.1\\helpers\\pydev', 19 # 'C:\\Python37\\python37.zip', 20 # 'C:\\Python37\\DLLs', 21 # 'C:\\Python37\\lib', 22 # 'C:\\Python37', 23 # 'C:\\Python37\\lib\\site-packages', 24 # 'C:\\JetBrains\\PyCharm 2018.2.1\\helpers\\pycharm_matplotlib_backend', 25 # 'E:\\Python', 'E:/Python'] 26 27 sys.platform 28 # 结果为:'win32' 29 30 sys.stdout 31 # 结果为:<_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'> 32 33 sys.stdout.write('please:') 34 # 结果为:please:7 35 36 val = sys.stdin.readline() 37 qwef 38 39 val 40 # 结果为:'qwef\n' 41 42 sys.stdin.read() 43 sf 44 # 结果为:'sf\n' 45 46 sys.getrecursionlimit() 47 # 结果为:1000 48 49 sys.setrecursionlimit(1200) 50 51 sys.getrecursionlimit() 52 # 结果为:1200 53 54 sys.getdefaultencoding() 55 # 结果为:'utf-8' 56 57 sys.getfilesystemencoding() 58 # 结果为:'utf-8'
-
常用模块学习—shutil模块详解
高级的 文件、文件夹、压缩包 处理模块
1 import shutil 2 3 #shutil.copyfileobj(fsrc, fdst[, length]) 4 #将文件内容拷贝到另一个文件中 5 f1 = open(file='sheve_test.py',mode='r',encoding='utf-8') 6 f2 = open(file='sheve_test_new.py',mode='w',encoding='utf-8') 7 shutil.copyfileobj(f1,f2) 8 #AttributeError: module 'shutil' has no attribute 'copyfileobj' 不要将文件名称设置为与模块相同的。 9 10 shutil.copyfileobj(f1,f2,length=10) #每次读10个 11 12 13 #shutil.copyfile(src, dst) 14 #拷贝文件(目标文件无需存在) 15 shutil.copyfile('f1.log', 'f2.log') 16 17 18 #shutil.copymode(src, dst) 19 #仅拷贝权限。内容、组、用户均不变(目标文件必须存在) 20 shutil.copymode('f1.log', 'f2.log') 21 22 23 #shutil.copystat(src, dst) 24 #仅拷贝状态的信息,包括:mode bits, atime, mtime, flags (目标文件必须存在) 25 shutil.copystat('f1.log', 'f2.log') 26 27 28 #shutil.copy(src, dst) 29 #拷贝文件和权限 30 shutil.copy('f1.log', 'f2.log') 31 32 33 #shutil.copy2(src, dst) 34 #拷贝文件和状态信息 35 shutil.copy2('f1.log', 'f2.log') 36 37 38 #shutil.ignore_patterns(*patterns) 39 #shutil.copytree(src, dst, symlinks=False, ignore=None) 40 #递归的去拷贝文件夹 41 shutil.ignore_patterns() 42 shutil.copytree("packages","packages1") 43 shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除 44 45 46 #shutil.rmtree(path[, ignore_errors[, onerror]]) 47 #递归的去删除文件 48 shutil.rmtree("folder1") 49 50 51 #shutil.move(src, dst) 52 #递归的去移动文件,它类似mv命令,其实就是重命名。 53 shutil.move("folder1","folder3") 54 55 56 ''' 57 shutil.make_archive(base_name, format,...) 58 创建压缩包并返回文件路径,例如:zip、tar 59 创建压缩包并返回文件路径,例如:zip、tar 60 base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径, 61 例如 data_bak =>保存至当前路径 62 例如:/tmp/data_bak =>保存至/tmp/ 63 64 format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar” 65 root_dir: 要压缩的文件夹路径(默认当前目录) 66 owner: 用户,默认当前用户 67 group: 组,默认当前组 68 logger: 用于记录日志,通常是logging.Logger对象 69 ''' 70 #将 /data 下的文件打包放置当前程序目录 71 ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data') 72 73 #将 /data下的文件打包放置 /tmp/目录 74 ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data') 75 76 77 import zipfile 78 # 压缩 79 z = zipfile.ZipFile('laxi.zip', 'w') 80 z.write('a.log') 81 z.write('data.data') 82 z.close() 83 84 # 解压 85 z = zipfile.ZipFile('laxi.zip', 'r') 86 z.extractall(path='.') 87 z.close() 88 89 90 91 import tarfile 92 # 压缩 93 t=tarfile.open('/tmp/egon.tar','w') 94 t.add('/test1/a.py',arcname='a.bak') 95 t.add('/test1/b.py',arcname='b.bak') 96 t.close() 97 98 # 解压 99 t=tarfile.open('/tmp/egon.tar','r') 100 t.extractall('/egon') 101 t.close()