设为首页 收藏本站
查看: 650|回复: 0

[经验分享] 【总结】Python 文件操作

[复制链接]

尚未签到

发表于 2017-5-1 07:13:08 | 显示全部楼层 |阅读模式
1. 几种常用的读取文件的方式:



(1) 读取文件

file_object = open('thefile.txt')
try:
  for line in file_object:
    'process line'
    pass
finally:
  file_object.close()


(2)一次读取所有的内容,并保存到一个大字符串中
#read the file as text
all_the_text = open('thefile.txt').read()


(3)以二进制格式读取
#read the file as binary data
all_the_data = open('abinfile', 'rb').read()




(4)
file_object = open('thefile.txt')
try:
  all_the_text = file_object.read()
finally:
  file_object.close()


(5) 逐行读取文本文件内容,并且将读取的数据保存到一个字符串列表中:
list_of_all_the_lines = file_object.readlines()



这样读取的每行末尾带有"\n"符合,如果不需要这个结束符,可以采用以下四种方式:


list_of_all_the_lines = file_object.read().splitlines()


list_of_all_the_lines = file_object.read().split('\n')


list_of_all_the_lines = [L.rstrip('\n') for L in file_object]



for line in file_object:
  line = line.rstrip('\n')



(6)
如果你需要去除每行末尾的空白符:
for line in file_object:
  line = line.rstrip()



(7)
依次读取二进制文件的100个字符,一直到文件末尾。
file_object = open('abinfile', 'rb')
try:
  while True:
    chunk = file_object.read(100)
    if not chunk:
      break
    do_something_with(chunk)
  finally:
    file_object.close()



(8)
依次读取二进制文件的若干个字符,一直到文件末尾。
def read_file_by_chunks(filename, chunksize=100):
  file_object = open(filename, 'rb')
  while True:
    chunk = file_object.read(chunksize)
    if not chunk:
      break
    yield chunk
  file_object.close()





for chunk in read_file_by_chunks('abinfile'):
  do_something_with(chunk)





2.
写入文件:


(1) 将一个长字符串写入文件或者二进制文件:


写入文本到文本文件
open('thefile.txt', 'w').write(all_the_text)


写入数据到二进制文件
open('abinfile','wb').write(all_the_data)



(2)
file_object = open('thefile.text', 'w')
file_object.write(all_the_text)
file_object.close()



(3)
如果写入的数据是在一个大字符串中,而是在一个字符串列表或者序列中,应该使用writelines方法(同样适用于二进制文件写入)


file_object.writelines(list_of_text_strings)
open('abinfile', 'wb').writelines(list_of_data_strings)



(4)




3.
获取指定路径下的文件列表


>>> import glob
>>> glob.glob('D:/Personal/Music/Fun/*.mp3')
['D:/Personal/Music/Fun\\All Alone.mp3',
'D:/Personal/Music/Fun\\All Alright.mp3',
'D:/Personal/Music/Fun\\All The Pretty Girls.mp3',
"D:/Personal/Music/Fun\\At Least I'M Not As Sad (As I Used To Be).mp3",
'D:/Personal/Music/Fun\\Barlights.mp3',
'D:/Personal/Music/Fun\\Be Calm.mp3',
'D:/Personal/Music/Fun\\Benson Hedges.mp3',
'D:/Personal/Music/Fun\\Carry On.mp3']




>>> os.listdir(" D:/Personal/Music/Fun")
['AlbumArtSmall.jpg', 'All Alone.mp3', 'All Alright.mp3', 'All The Pretty Girls.mp3', "At Least I'M Not As Sad (As I Used To Be).mp3", 'Barlights.mp3', 'Be Calm.mp3', 'Benson Hedges.mp3', 'Carry On.mp3']



>>> glob.glob('D:/Personal/Music/Fun/A*.mp3')
['D:/Personal/Music/Fun\\All Alone.mp3',
'D:/Personal/Music/Fun\\All Alright.mp3',
'D:/Personal/Music/Fun\\All The Pretty Girls.mp3',
"D:/Personal/Music/Fun\\At Least I'M Not As Sad (As I Used To Be).mp3"]





>>> glob.glob(' D:/Personal/Music/*/A*.mp3'')
一个通配符是 "*.mp3" (用于匹配 用于匹配 用于匹配 用于匹配 用于匹配 .mp3 文件 );
另一个通配符是子目录名本身,用于匹配 c:\music 中的所有子目录。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-371417-1-1.html 上篇帖子: python Dictionary字典使用 下篇帖子: python 对象,属性的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表