整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作。
文件输入输出
1、内建函数open(file_name,文件打开模式,通用换行符支持),打开文件返回文件对象。
2、对打开文件进行读取时,readline()与readlines()的区别在于是否一次性的读取所有的内容,并将每行的信息作为列表中的一个子项。
例如:文件test.txt中
1,3,4
2,35,6
分别用readline与readlines对其进行读取
r=file_object.readline(); #结果为1,3,4 r=file_object.readlines(); #结果为['1,3,4\n', '2,35,6']
3、文件迭代
使用迭代器的file.next()
用于读取文件的下一行。相比for循环,更复杂,一般采用 for循环直接迭代。
4、文件移动
seek(off,whence=0)
可以在文件中移动文件指针到不同的位置,,从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。
tell()可以展示 我们的移动过程,展示我们的当前位置
5、os模块
6、文件写入f.write();writelines()接受一个字符串列表作为参数
需要手动输入换行符\n;
fobj=open('test','w');#直接在指定路径下打开test1 ,如果没有则直接生成,但若存在,则出错; fobj.write('foo\n'); fobj.write('bar\n'); fobj.close(); #结果为 #foo #bar import os; file_object=open(r'E:\Python\iostream_test\test.txt','r+'); aline=raw_input("Enter a line ('.'to quit):"); if aline !=".": file_object.write('%s%s' % (aline,os.linesep)); #在文件test.txt中写入一条字符串结果为txt 文件中的一个内容
标准文件
一般程序一执行,就可以访问3个标准文件,分别是标准输入(一般是键盘)、标准输出(到显示器的缓冲输出)和标准错误(到屏幕的非缓冲输出),这里的缓冲、非缓冲是指open()的三个参数。
文件系统
对文件系统的访问大多通过python的os模块实现。该模块是python访问操作系统功能的主要接口。
os除了对进程和进程运行环境进行管理外,os模块还负责处理大部分的文件系统操作,包括删除/重命名文件,遍历目录树,已经管理文件访问权限等。
另一个os.path 模块可以完成针对路径名的操作,它提供函数 完成管理和操作文件路径中的各个部分,获取文件或者子目录信息,文件路径查询等操作。
针对os path的操作,操作对象E:\Python\iostream_test文件及其下的test.txt文件
os.path.exists(),
检测指定路径的文件或者目录是否存在。
import os; for tempdir in ('/test.txt',r'E:\Python\iostream_test\test.txt'): if os.path.exists(tempdir): print 'yes'; break; else: print 'no temp directory available'; tempdir=' '; #结果为yes, # 若in中改为('/test.txt',r'D:\Python\iostream_test\test.txt'),则结果为no temp directory available os.path.isdir(),检测指定了路径是否存在且为一个目录,只能是目录,否则报错。 import os; for tempdir in ('/test.txt',r'E:\Python\iostream_test\test.txt'): #in中检测的是文件,而非目录,所以未输出yes if os.path.isdir(tempdir): print 'yes'; break; else: print 'no temp directory available'; tempdir=' '; # 输出no temp directory available import os; for tempdir in ('/test.txt',r'D:\Python\iostream_test\test.txt'): #指定路径在D盘,因而不存在 if os.path.isdir(tempdir): print 'yes'; break; else: print 'no temp directory available'; tempdir=' '; import os; for tempdir in ('/test.txt',r'E:\Python\iostream_test'): if os.path.isdir(tempdir): print 'yes'; break; else: print 'no temp directory available'; tempdir=' '; #输出的是yes
同理可得os.path.isfile()
只可检测指定路径是否存在且为一个文件
以下针对os中某些进行练习,针对文件的操作,因先检测是否存在指定路径,再对该路径或者路径中的文件做操作。更多的练习可以看read.md
import os; for tempdir in ('/tmp',r'E:\Python\iostream_test'): if os.path.isdir(tempdir):#检测指定路径是否存在且为一个目录,并赋给tempdir print 'yes'; break; else: print 'no temp directory available'; tempdir=' '; if tempdir: os.chdir(tempdir); #改变当前工作路径 cwd=os.getcwd(); #获取当前工作路径; print 'current temporany directory is :'; print cwd; print os.listdir(cwd); print 'creating example directory'; os.mkdir('example'); #在当前目录下新建一个新的文件 os.chdir('example'); #改变目录到example的文件下 cwd=os.getcwd();#获取example的文件路径 print 'new working directory:' print cwd; print ' original directory listing :' print os.listdir(cwd);#列出(example)指定路径下的文件 os.chdir(tempdir); cwd=os.getcwd(); print os.listdir(cwd);#列出(tempdir)指定路径下的文件 # 结果为: # current temporany directory is : # E:\Python\iostream_test # ['pspathex.py', 'read.md', 'read.py', 'test.txt'] # creating example directory # new working directory: # E:\Python\iostream_test\example # original directory listing : # [] # ['example', 'pspathex.py', 'read.md', 'read.py', 'test.txt'] os.path.join()方法将分离的各部分组合成一个路径名 path=os.path.join(cwd,os.listdir(cwd)[0]); print ' full file pathname:' print path; #结果为E:\Python\iostream_test\example\filetest.txt os.path.split(path)方法将组合路径分成(路径名,文件名) path=os.path.join(cwd,os.listdir(cwd)[0]); print os.path.split(path);#(pathname,basename) #结果为('E:\\Python\\iostream_test\\example', 'filetest.txt') os.path.splitext(os.path.basename(path))方法将文件分成(文件名,文件扩展名) path=os.path.join(cwd,os.listdir(cwd)[0]); print os.path.splitext(os.path.basename(path));#(filename,extension) #结果为('filetest', '.txt')
相关模块
永久存储模块,永久存储数据:pickle 、marshal模块、DBM风格模块、shelve模块
总结
以上所述是小编给大家介绍的python 中文件输入输出及os模块对文件系统的操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】