Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数  linecache模块

目录

Pycharm使用技巧(转载)

Python第一天  安装  shell  文件

Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化

Python第三天 序列  5种数据类型  数值  字符串  列表  元组  字典

Python第四天   流程控制   if else条件判断   for循环 while循环

Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数

Python第六天   类型转换

Python第七天   函数  函数参数   函数变量   函数返回值  多类型传值    冗余参数   函数递归调用   匿名函数   内置函数   列表表达式/列表重写

Python第八天  模块   包   全局变量和内置变量__name__    Python path

Python第九天  面向对象  类定义   类的属性    类的方法    内部类   垃圾回收机制   类的继承 装饰器

Python第十天   print >> f,和fd.write()的区别    stdout的buffer  标准输入 标准输出  标准错误   重定向 输出流和输入流

Python第十一天    异常处理  glob模块和shlex模块    打开外部程序和subprocess模块  subprocess类  Pipe管道  operator模块   sorted函数   生成器  walk模块   hashlib模块

Python第十二天     收集主机信息     正则表达式  无名分组   有名分组

Python第十三天   django 1.6   导入模板   定义数据模型   访问数据库   GET和POST方法    SimpleCMDB项目   urllib模块   urllib2模块  httplib模块  django和web服务器整合  wsgi模块   gunicorn模块

Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式

Python第十五天  datetime模块 time模块   thread模块  threading模块  Queue队列模块  multiprocessing模块  paramiko模块  fabric模块

注意:python里windows的路径要写成 /

f = open('F:/a.txt', 'a')  #以写的方式打开

Python文件访问

1、内置函数 open

open
访问模式    说明
r    以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
x    打开一个文件只用于写入。如果该文件已存在则抛出异常。如果该文件不存在,创建新文件。
w    打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a    打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb    以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb    以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+    打开一个文件用于读写。文件指针将会放在文件的开头。
w+    打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+    打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+    以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+    以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
with open :python2.6才有的方法,python2.5没有,用with open,退出with open代码块之后的代码不需要显式fd.close()

startswith函数、split函数

split(self, sep=None, maxsplit=None)
If maxsplit is given, at most maxsplit splits are done.
maxsplit=1,字符串里出现了两个空格,那么只分割第一个空格,第二个空格不做任何处理

startswith(self, prefix, start=None, end=None)
With optional start, test S beginning at that position.
With optional end, stop comparing S at that position.

若不存在会创建新文件的打开方式:a,a+,w,w+
r+:可读可写,若文件不存在,报错,r+进行覆盖写

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#__author__="huazai"
"""
pycharm 使用指南
Date:2016.08.12
"""with open('/proc/meminfo') as fd:for line in fd:if line.startswith('MemTotal'):total = line.split()[1]continueif line.startswith('MemFree'):free = line.split()[1]breakprint "free:%.2f" % (int(free) / 1024.0) + 'M'
print "total:%.2f" % (int(total) / 1024.0) + 'M'

文件的方法
fd.close():不执行fd.close(),python程序退出的时候也会close文件
fd.read() 读取文件的所有内容
fd.readline() 一次读取一行
fd.readlines() :将文件的内容保存到列表,列表的一行对应文件的一行,每个元素都会加上一个换行符\n
next():一行一行读取
fd.write() 写字符串到文件中,并返回写入的字符数
fd.writelines() 写一个字符串列表到文件中

for循环访问文件
第一种 readlines全部把文件内容读到内存

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#__author__="huazai"
"""
pycharm 使用指南
Date:2016.08.12
"""with open('C:\Users\Administrator\Desktop\mRemoteNG\mRemoteNG-Portable-1.69\CREDITS.TXT') as fd:for line in fd.readlines():print line,

---------------------------------------------------------------
第二种 一行一行的读到内存 比较节省内存

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#__author__="huazai"
"""
pycharm 使用指南
Date:2016.08.12
"""with open('C:\Users\Administrator\Desktop\mRemoteNG\mRemoteNG-Portable-1.69\CREDITS.TXT') as fd:for line in fd:print lineif fd.next().startswith('VncSharp'):break

这里的fd是一个对象,有fd.next()方法,是显示文件下一行,那么for i in fd就相当于一直在执行fd.next()方法,直到文件结束

2、codecs模块的open函数

import codecs
fw = codecs.open('test1.txt','a','utf-8')
fw.write(line2)

import codecswith codecs.open('3.txt', 'rb', 'utf-8')  as fd:a=fd.readline()print a

#-*- encoding: gb2312 -*-
import codecs, sys# 用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode
bfile = codecs.open("dddd.txt", 'r', "big5")
#bfile = open("dddd.txt", 'r')

ss = bfile.read()
bfile.close()
# 输出,这个时候看到的就是转换后的结果。如果使用语言内建的open函数来打开文件,这里看到的必定是乱码
print ss, type(ss)

while循环访问文件

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#__author__="huazai"
"""
pycharm 使用指南
Date:2016.08.12
"""with open('C:\Users\Administrator\Desktop\mRemoteNG\mRemoteNG-Portable-1.69\CREDITS.TXT') as fd:while True:line = fd.readline()print line,if not line:break

替换文件内容,两个文件同时使用上下文管理器

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author : huazai
# @Time : 2018/5/31 10:45
# @File : aa.py
# @Description :import codecs
import re
import osdef sub_string():'''替换字符串:return:'''with codecs.open('/etc/redis.conf') as f1, codecs.open('/etc/redis.conf.bak', "w") as f2:content = ''.join(f1.readlines())content = re.sub(r'\nbind 127.0.0.1', '\nbind {}'.format('1.1.1.1'), content, count=1)f2.write(content)os.remove('/etc/redis.conf')os.rename('/etc/redis.conf.bak', '/etc/redis.conf')def sub_cap():'''将每个单词首字母转为大写:return:'''with codecs.open('/etc/redis.conf') as f1, codecs.open('/etc/redis.conf.bak', "w") as f2:for line in f1:f2.write(" ".join([word.capitalize() for word in line.split()]))f2.write('\n')os.remove('/etc/redis.conf')os.rename('/etc/redis.conf.bak', '/etc/redis.conf')if __name__ == '__main__':sub_cap()sub_string()


返回某一行的内容

linecache模块

import linecache

print    linecache.getline('3.txt',2)  # 返回文件的第二行的内容
print    linecache.getlines('3.txt')   #返回文件的所有内容


filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具
python标准库还提供了difflib模块用于比较文件的内容

filecmp.cmp(f1, f2[, shallow])
比较两个文件的内容是否匹配。
参数f1,f2指定要比较的文件的路径。可选参数shallow指定比较文件时是否需要考虑文件本身的属性(通过os.stat函数可以获得文件属性)。
如果文件内容匹配,函数返回True,否则返回False。

r = filecmp.cmp('F:\\temp\\py\\bisect2.py', 'F:\\temp\\py\\bisect2.py')
print(r)

filecmp.cmpfiles(dir1, dir2, common[, shallow]):
比较两个文件夹内指定文件是否相等。
参数dir1,dir2指定要比较的文件夹,参数common指定要比较的文件名列表。函数返回包含3个list元素的元组,分别表示匹配、不匹配以及错误的文件列表。
错误的文件指的是不存在的文件,或文件被琐定不可读,或没权限读文件,或者由于其他原因访问不了该文件。

dir1 = 'F:\\temp\\py\\dir1'
dir2 = 'F:\\temp\\py\\dir2'
r = filecmp.cmpfiles(dir1, dir2, ['difflib1.py', 'difflib5.py', 'test1.txt'])
print(r)

dircmp类
用于比较文件夹,通过该类比较两个文件夹,可以获取一些详细的比较结果(如只在A文件夹存在的文件列表),并支持子文件夹的递归比较。

dircmp提供了三个方法用于报告比较的结果
report():只比较指定文件夹中的内容(文件与文件夹)
report_partial_closure():比较文件夹及第一级子文件夹的内容
report_full_closure():递归比较所有的文件夹的内容

dircmp还提供了下面这些属性用于获取比较的详细结果
left_list:左边文件夹中的文件与文件夹列表;
right_list:右边文件夹中的文件与文件夹列表;
common:两边文件夹中都存在的文件或文件夹;
left_only:只在左边文件夹中存在的文件或文件夹;
right_only:只在右边文件夹中存在的文件或文件夹;
common_dirs:两边文件夹都存在的子文件夹;
common_files:两边文件夹都存在的子文件;
common_funny:两边文件夹都存在的子文件夹;
same_files:匹配的文件;
diff_files:不匹配的文件;
funny_files:两边文件夹中都存在,但无法比较的文件;
subdirs:

Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块...相关推荐

  1. python strip()函数和Split函数的用法总结

    目录 1.python中for循环如何控制步长 2.python strip()函数和Split函数的用法总结 1.python中for循环如何控制步长 for i in range(开始/左边界, ...

  2. python strip和split_python strip() 函数和 split() 函数的详解及实例

    python strip() 函数和 split() 函数的详解及实例 一直以来都分不清楚strip和split的功能,实际上strip是删除的意思:而split则是分割的意思.因此也表示了这两个功能 ...

  3. python字符串中strip() 函数和 split() 函数的详解

    strip是删除的意思:split则是分割的意思.strip可以删除字符串的某些字符,split则是根据规定的字符将字符串进行分割. 1.Python strip()函数 介绍 函数原型 声明: s为 ...

  4. python中strip() 函数和 split() 函数的理解

    原文转自:http://blog.csdn.net/shenwanjiang111/article/details/48158749 一直以来都分不清楚strip和split的功能,实际上strip是 ...

  5. python中strip函数和split函数

    strip是删除的意思:split则是分割的意思.strip可以删除字符串的某些字符,split则是根据规定的字符将字符串进行分割. 1.Python strip()函数 介绍 函数原型 声明: s为 ...

  6. python中split函数_python strip()函数和Split函数的用法总结

    strip函数原型 声明:s为字符串,rm为要删除的字符序列. 只能删除开头或是结尾的字符或是字符串.不能删除中间的字符或是字符串. s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除 ...

  7. Python中的join()函数和split()函数的用法

    题目:CFUltra-Fast Mathematician 题意:给两个长度相等的0,1字符串,在相同的位置的两个字符不同就输出1,否则输出0. 比如: 1010100 0100101 就输出: 11 ...

  8. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第五章 WEB黑客(3)暴力破解目录与文件位置

    黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第五章 WEB黑客(3)暴力破解目录与文件位置 文章目录 黑帽python第二版(Black Hat P ...

  9. Python编曲实践(五):通过编写爬虫来爬取海量MIDI文件,预备构建数据集(附有百度云下载链接)

    前言 由于毕业设计的课题是通过CycleGAN搭建一个音乐风格转换系统,需要大量的音乐文件来训练神经网络,而MIDI文件作为最广泛使用的一种电脑编曲保存媒介,十分容易搜集资源,也有很多成熟的Pytho ...

最新文章

  1. 庆绿洲创立百天休闲观光游--腐败、情色、绯闻
  2. android 九宫格封装,Android 九宫格的实现方法
  3. 2021年考计算机考研三战,考研越来越难,2021考研人将会面临哪三大挑战?
  4. fetch移动端浏览器兼容问题
  5. linux qemu原理,最全的剖析QEMU原理的文章3
  6. 纺织服装外贸行业解决方案丨汇信外贸软件
  7. Hive元数据存储和表数据存储
  8. 定时删除虚拟服务器快照,自动执行VMware快照并删除超过5天的快照
  9. 第一单元:函数预备知识——邻域——01
  10. 十进制换算成二进制、八进制、十六进制
  11. Maven:你还在手动导包吗?带你了解Maven的前世今生(尚硅谷详细笔记)
  12. 解决在命令行中出现/usr/local/hadoop/libexec/hadoop-functions.sh: 行 1185: dirname: 未找到命令
  13. Polkadot波卡链众筹成本价与总量、创始人团队简介
  14. 命令行启动burp报错:-Xbootclasspath/p is no longer a supported option.解决方法(Mac )
  15. 【独家】MobaXterm v22.1 全能终端连接工具中文版最新版
  16. 深度学习在slam的应用Deep Learning Applications in SLAM
  17. 小白学习三维检测和三维语义理解(3D-understanding)持续更新中。。
  18. 中概股最快IPO:瑞幸咖啡成立两年后上市,市值47亿美元
  19. 云计算具有什么平台_云计算?通俗易懂点讲云计算是什么意思?
  20. java list namevaluepair_java - 数值等效于nameValuePair数组列表吗? - 堆栈内存溢出

热门文章

  1. Best Friend Forever
  2. [Wix] 搞了这么久才知道Wix怎么装
  3. linux 的那些hung 检测机制
  4. Java基础-SSM之mybatis快速入门篇
  5. SQL Server2008 用编写脚本自动生成的Sql语言出现 “列名显示无效 ”错误
  6. 计算区域中有t 个点的 区域有多少个+计算几何 + 叉乘+sort+ 二分 + map poj 2398 Toy Storage...
  7. rip v1不支持vlsm的原因
  8. 云平台队列服务-Qbus实践
  9. ShardingSphere(七) 读写分离配置,实现分库读写操作
  10. 两图说明 java 开发工具中启动类参数都是干嘛的