Python基础笔记-07

55.os模块中关于文件/目录常用的函数使用方法

getcwd()返回当前工作目录

>>> import os

>>> os.getcwd()

'D:\\python\\3.5.1'

chdir(path)改变工作目录

>>> os.chdir('C:\\')

>>> os.getcwd()

'C:\\'

listdir(path='.')列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录)

>>> os.listdir('.')

['$360Section', '$Recycle.Bin', '360SANDBOX', 'Boot', 'bootmgr', 'BOOTNXT', 'BOOTSECT.BAK', 'Config.Msi', 'Documents and Settings', 'hiberfil.sys', 'Intel', 'MSOCache', 'PerfLogs', 'Program Files', 'Program Files (x86)', 'ProgramData', 'Recovery', 'swapfile.sys', 'System Volume Information', 'Users', 'Windows', '学习暂存']

mkdir(path)创建单层目录,如该目录已存在抛出异常

1)创建一个文件夹

>>> os.mkdir('D:\\A')

>>> os.getcwd()

'C:\\'

>>> os.chdir('D:\\')

>>> os.listdir('.')

['$RECYCLE.BIN', '360', '360Downloads', 'A', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'test.txt', 'visualstudiocode', 'weixin', 'WinRAR', '下载', '坚果云', '射手播放器', '微云', '曹津', '百度云盘', '迅雷', '迅雷下载']

2)创建复合文件夹(夫文件夹已经存在)

>>> os.mkdir('D:\\A\\B')

>>> os.listdir('.')

['$RECYCLE.BIN', '360', '360Downloads', 'A', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'test.txt', 'visualstudiocode', 'weixin', 'WinRAR', '下载', '坚果云', '射手播放器', '微云', '曹津', '百度云盘', '迅雷', '迅雷下载']

>>> os.chdir('D:\\A')

>>> os.getcwd()

'D:\\A'

>>> os.listdir('.')

['B']

makedirs(path)递归创建多层目录,如该目录已存在抛出异常,注意:‘E:\\a\\b'和'E:\\a\\c'并不会冲突

>>> os.makedirs('D:\\a\\b\\c')

>>> os.getcwd()

'D:\\A'

>>> os.listdir()

['B']

>>> os.chdir('D:\\')

>>> os.listdir()

['$RECYCLE.BIN', '360', '360Downloads', 'A', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'test.txt', 'visualstudiocode', 'weixin', 'WinRAR', '下载', '坚果云', '射手播放器', '微云', '曹津', '百度云盘', '迅雷', '迅雷下载']

>>> os.chdir('D:\\a')

>>> os.listdir()

['B']

>>> os.chdir('D:\\a\\B')

>>> os.listdir()

['c']

>>>

remove(path)删除文件

>>> os.remove('D:\\a\\B\\c\\hhh.txt')

rmdir(path)删除单层目录,如该目录非空则抛出异常

>>> os.rmdir('D:\\a\\B\\c')

Traceback (most recent call last):

 File "", line 1, in

   os.rmdir('D:\\a\\B\\c')

OSError: [WinError 145] 目录不是空的。: 'D:\\a\\B\\c'

>>>

removedirs(path)递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常

>>> os.getcwd()

'D:\\a\\B'

>>> os.chdir('D:\\')

>>> os.removedirs('D:\\A\\B\\c')

>>> os.listdir('.')

['$RECYCLE.BIN', '360', '360Downloads', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'test.txt', 'visualstudiocode', 'weixin', 'WinRAR', '下载', '坚果云', '射手播放器', '微云', '曹津', '百度云盘', '迅雷', '迅雷下载']

rename(old,new)将文件old重命名为new

>>> os.getcwd()

'D:\\a\\B'

>>> os.chdir('D:\\')

>>> os.removedirs('D:\\A\\B\\c')

>>> os.listdir('.')

['$RECYCLE.BIN', '360', '360Downloads', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'test.txt', 'visualstudiocode', 'weixin', 'WinRAR', '下载', '坚果云', '射手播放器', '微云', '曹津', '百度云盘', '迅雷', '迅雷下载']

>>> os.rename('test.txt','hahah.txt')

>>> os.listdir('.')

['$RECYCLE.BIN', '360', '360Downloads', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'hahah.txt', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'visualstudiocode', 'weixin', 'WinRAR', '下载', '坚果云', '射手播放器', '微云', '曹津', '百度云盘', '迅雷', '迅雷下载']

>>>

system(command)运行系统的shell命令

>>> os.system('cmd')

walk(top)

*以下支持路径操作中常用倒的一些定义,支持所有平台

os.curdir指代当前目录('.')

>>> os.curdir

'.'

>>> os.listdir(os.curdir)#利用这个方式可以规避不同系统中不是用一个点来表示本目录

['$RECYCLE.BIN', '360', '360Downloads', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'hahah.txt', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'visualstudiocode', 'weixin', 'WinRAR', '下载', '坚果云', '射手播放器', '微云', '曹津', '百度云盘', '迅雷', '迅雷下载']

os.pardir指代上一级目录('..')

os.sep输出操作系统特定的路径分隔符(win下为'\\',linux下为'/')

os.linesep当前平台使用的行终止符(win下为'\r\n',linux下为'\n')

os.name指代当前使用的操作系统(包括:posix、nt、mac、os2、ce、java)

2)os.path模块中关于路径常用的函数使用方法

basename(path)去掉目录路径,单独返回文件名

>>> os.path.basename('D:\\a\\b\\c\\yangfei.txt')

'yangfei.txt'

dirname(path)去掉文件名,单独返回目录路径

>>> os.path.dirname('D:\\a\\b\\c\\yangfei.txt')

'D:\\a\\b\\c'

join(path1[,path1[,....]])将path1,path2各部分组合成一个路径名

>>> os.path.join('A','B','C')

'A\\B\\C'

>>> os.path.join('D:\\','A','B','C')#join不会真的去建立文件夹

'D:\\A\\B\\C'

>>> os.getcwd()

'D:\\'

>>> os.chdir('D:\\A')

Traceback (most recent call last):

 File "", line 1, in

   os.chdir('D:\\A')

FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'D:\\A'

split(path)分割文件名与路径,返回(f_path,f_name)元组,如果完全使用目录,它会将最后一个目录作为文件名分离,且不会判断文件或目录是否存在

>>> os.path.split('E:\\A\\sexy.avi')

('E:\\A', 'sexy.avi')

>>> os.path.split('E:\\A\\B')

('E:\\A', 'B')

splitext(path)分离文件名与扩展名,返回(f_name,f_extension)元组

>>> os.path.splitext('E:\\a\\sexy.avi')

('E:\\a\\sexy', '.avi')

getsize(file)返回指定文件的尺寸,单位是字节

>>> os.getcwd()

'D:\\'

>>> os.path.getsize('hahah.txt')

13

getatime(file)返回指定文件最近的访问实际(浮点型秒数,可用time模块的gmtime()或者localtime()函数换算)

getctime(file)返回指定文件的创建时间(浮点型秒数,可用time模块的gmtime()或者localtime()函数换算)

getmtime(file)返回指定文件最新的修改时间(浮点型秒数,可用time模块的gmtime()或者localtime()函数换算)

>>> os.path.getatime('hahah.txt')

1515416742.079957

>>> import time

>>> time.localtime(os.path.getatime('hahah.txt'))

time.struct_time(tm_year=2018, tm_mon=1, tm_mday=8, tm_hour=21, tm_min=5, tm_sec=42, tm_wday=0, tm_yday=8, tm_isdst=0)

*以下为函数返回True或False

exists(path)判断指定路径(目录或文件)是否存在

>>> os.listdir('.')

['$RECYCLE.BIN', '360', '360Downloads', 'AppStore', 'Axcure', 'BaiduNetdiskDownload', 'DTLFolder', 'Firefox', 'hahah.txt', 'kuaiya', 'Movie', 'mysql', 'pagefile.sys', 'python', 'QQ', 'record.txt', 'SMSTSLog', 'System Volume Information', 'visualstudiocode', 'weixin', 'WinRAR', '下载', '坚果云', '射手播放器', '微云', '曹津', '百度云盘', '迅雷', '迅雷下载']

>>> exists('D:\\360')

Traceback (most recent call last):

 File "", line 1, in

   exists('D:\\360')

NameError: name 'exists' is not defined

>>> os.path.exists('D:\\360')

True

isabs(path)判断指定路径是否为绝对路径

>>> os.path.isabs('D:\\360')

True

isdir(path)判断指定路径是否存在且是一个目录

isfile(path)判断指定路径是否存在且是一个文件

islink(path)判断指定路径是否存在且是一个符合链接

ismount(path)判断指定路径是否存在且是一个挂载点

samefile(path1,path2)判断path1和path2两个路径是否指向同一个文件

>>> os.path.exists('D:\\360')

True

>>> os.path.isabs('D:\\360')

True

>>> os.path.isabs('曹津\\PS4')

False

>>> os.path.isdir('D:\\360')

True

>>> os.path.isfile('D:\\360')

False

>>> os.path.islink('D:\\360')

False

>>> os.path.ismount('D:\360')

False

>>> os.path.ismount('D:\\')

True

56.pickle模块

1)将文件存放成二进制:picking

2)将二进制文件读取成源文件:unpikling

3)将列表写入成二进制文件,再将二进制文件解压读出

>>> import pickle  #引入pickle模块

>>> my_list=[123,3.14,'xiaojiayu',['another list']]  #定义一个列表my_list

>>> pickle_file1=open('my_file.plk','wb')  #以wb形式打开(没的话就新增)文件my_file.plk,赋给对象pickle_file1

>>> pickle.dump(my_list,pickle_file1) #利用pickle的dump函数将my_list的数据以二进制形式倒入倒pickle_file1中

>>> pickle_file1.close()#关闭pickle_file1

>>> pickle_file2=open('my_file.plk','rb')#以二进制读出的形式rb打开my_file.plk并赋给对象pickle_file2

>>> pickle.load(pickle_file2)#利用pickle的load函数将pickle_file2解压后读出

[123, 3.14, 'xiaojiayu', ['another list']]

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 2.和操作系统相关的调用 系统相关的信息模块 import sys sys.argv是一个list,包含所有的命令...
    周倜吉阅读 359评论 0 0
  • pyton review 学习指南 https://www.zhihu.com/question/29138020...
    孙小二wuk阅读 1,039评论 0 2
  • 常用 提高python编码效率 赋值 列表推导式 列表解析表达式,类似[i*2 for i in list] 三元...
    今夕何夕_walker阅读 734评论 0 1
  • 记录常用命令: os.name #显示当前使用的平台 os.sep #当前平台下路径分隔符 os.lines...
    merryzhou阅读 418评论 0 0
  • 我的家乡,地处榕江之南,大尖山下,四周青山环绕,细水长流。一年四季,满山遍野,瓜果飘香,堪称“世外桃源”。 ...
    小圆点阅读 356评论 0 1