python——文件管理
文件操作分为读、写、修改
一、读文件
f = open(file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt',mode='r',encoding='utf-8') data = f.read() # 表示读取所有内容,内容是已经转换完毕的字符串。
f.close() # 表示关闭文件
file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt' 表示文件路径
mode='r' 表示读取模式。有r,rb模式,在这两种模式下,只能读,不能写。rb表示以二进制模式读取文件,直接以bytes格式将数据读到内存,如果想查看内容,还需要手动decode,因此在文件打开阶段,不需要指定编码。
encoding='utf-8' 表示以何种编码规则读文件。此处的encoding必须和文件在保存时设置的编码相一致,不然“断句”会不准确从而造成乱码。
假如你不知道你要处理的文件是什么编码可怎么办呢?
安装第三方工具:pip install chardet
import chardet
f = open('log',mode='rb')
data = f.read()
f.close()
result = chardet.detect(data)
print(result)
输出:
{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
可以看出该文件是以GB2312编码的。
文件循环:
f = open("兼职白领学生空姐模特护士联系方式.txt",'r',encoding="utf-8")
for line in f:
print(line)
f.close()
二、写文件
f = open(file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt',mode='w',encoding='utf-8') # 打开文件
f.write('Jack 22 IT 134222xxxx') # 写入内容
f.close()
写模式包括w,wb,只能写,不能读。在写入内容之前,如果文件不存在,将自动 创建一个新文件,如果文件存在,将清空文件,再写入新内容。wb表示以二进制的模式写入文件。
三、追加(a,ab)
一种不清空文件,默认将内容追加到文件尾部的方式。有a,ab两种模式。
f = open("兼职白领学生空姐模特护士联系方式.txt",'a',encoding="gbk")
f.write("\n杜姗姗 北京 167 49 13324523342")
f.close()
四、读写模式(r+)
既可以读又可以写,默认将内容追加到文件尾部。
f = open("兼职白领学生空姐模特护士联系方式.txt",'r+',encoding="gbk")
data = f.read() #可以读内容
print(data)
f.write("\nblack girl 河北 167 50 13542342233") #可以写
f.close()
五、写读模式(w+)
先写后读,在写之前会将文件清空,若不存在改文件,会自动创建文件,与w相比只是多了一个读的功能。
f = open("兼职白领学生空姐模特护士联系方式.txt",'w+',encoding="gbk")
data = f.read()
print(data)
f.write("\nnewline 1哈哈")
f.write("\nnewline 2哈哈")
print("content",f.read())
f.close()
六、文件其他常用操作
fileno():返回文件句柄在内核中的索引值
flush():把文件从内存里强制刷新到硬盘上
readable():判断是否可读
writable():判断是否可写
readline():只读一行,遇到\r 或者\n为止 返回一个字符串格式
readlines():读取所有行 返回一个列表,列表元素是每行的内容
seek():把操作文件的光标移到指定位置,seek的长度是按字节计算的。
tell():返回当前文件操作光标的位置,按字节计算
truncate():按指定长度截断文件(指定长度的话,就从指定位置开始删掉之后内容,不指定长度就从当前位置到文件尾部的内容全部删除)
f = open("test_file", "r+", encoding="utf-8")
print(f.tell())
f.seek(27) # 将光标移到第27个字节的位置
f.truncate() # 截掉第27个字节之后的内容
f.close()
七、文件修改
# 将名为“李云”的用户修改为“张山”
f_old = open("mail_list", "r", encoding="utf-8")
f_new = open("mail_list_new", "w", encoding="utf-8") # 创建一个新文件
old_str = "李云"
new_str = "张山"
for line in f_old:
if old_str in line:
new_line = line.replace(old_str, new_str) # 替换
else:
new_line = line
f_new.write(new_line) # 写入新的内容
f_new.close()
f_old.close()
此法,是新建一个新文件的方式,边从旧文件读内容,然后修改,然后再写入新文件。
上面的代码,会生成一个修改后的新文件 ,原文件不动,若想覆盖原文件,将新文件名替换掉旧文件名就行:
# 将名为“李云”的用户修改为“张山”
import os
f_old = open("mail_list", "r", encoding="utf-8")
f_new = open("mail_list_new", "w", encoding="utf-8") # 创建一个新文件
old_str = "李云"
new_str = "张山"
for line in f_old:
if old_str in line:
new_line = line.replace(old_str, new_str) # 替换
else:
new_line = line
f_new.write(new_line) # 写入新的内容
f_new.close()
f_old.close()
os.replace("mail_list_new", "mail_list") # 新文件名改为旧文件名
python——文件管理的更多相关文章
- python文件管理小计
1.读取只当路径下所有文件和文件夹 import os def file_name(file_dir): for root, dirs, files in os.walk(file_dir): pri ...
- python文件管理
文件没有修改操作,修改的方式为打开文件--读取文件--内存中编辑文件--将内容写入文件 打开文件方式 with open('a.txt','w') as f: #操作系统自动关闭文件 f.write( ...
- Python标准库04 文件管理 (部分os包,shutil包)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在操作系统下,用户可以通过操作系统的命令来管理文件,参考linux文件管理相关命令 ...
- Python -- 标准库 文件管理 (部分os包,shutil包)
在操作系统下,用户可以通过操作系统的命令来管理文件,参考linux文件管理相关命令.Python标准库则允许我们从Python内部管理文件.相同的目的,我们有了两条途径.尽管在Python调用标准库的 ...
- Ubuntu16.04实用python脚本 - 启动nautilus(Gnome的文件管理器)!
nautilus是Gnome的图形的文件管理器,可以很方便管理各种文件,但是通常我们不是在root用户下,如果想在root下使用,必须在shell里面输入命令: sudo nautilus 这样做固然 ...
- Python之路【第五篇】python基础 之初识函数(一)和文件管理
转载请注明出处http://www.cnblogs.com/wupeiqi/articles/5453708.html 函数 一.背景 ...
- python学习笔记25(文件管理 os包)
os包我们经常会与文件和目录打交道,对于这些操作python提供了一个os模块,里面包含了很多操作文件和目录的函数.如果你对linux基本操作了解的话,下面的一些os方法应该会很熟悉的,因为基本和li ...
- Python学习笔记11:标准库之文件管理(os包,shutil包)
1 os包 os包包含各种各样的函数,以实现操作系统的很多功能.这个包很庞杂.os包的一些命令就是用于文件管理. 我们这里列出最经常使用的: mkdir(path) 创建新文件夹.path为一个字符串 ...
- Python 编程实战提高测试工作效率实例之svn 文件管理
#coding=utf-8 ''' Created on 2016年8月22日 @author:Tom Gao ''' importre importos importtime "" ...
随机推荐
- Unix\Linux | 总结笔记 |文件系统
1. ls [选项] [文件] 显示目录中的文件信息 -a 显示全部文件(包括隐藏文件) -l 查看文件的属性.大小等详细信息 (ls -l 详解) -al 查看当前目录中 ...
- 配置yum源的步骤(阿里源)
配置yum源的步骤1.可以移除默认的yum仓库,也就是删除 /etc/yum.repos.d/底下所有的.repo文件(踢出国外的yum源) 1.配置yum源,找到阿里云的官方镜像源地址 https: ...
- [poj3744] Scout YYF I【概率dp 数学期望】
传送门:http://poj.org/problem?id=3744 令f(i)表示到i,安全的概率.则f(i) = f(i - 1) * p + f(i - 2) * (1 - p),若i位置有地雷 ...
- 【洛谷2304_LOJ2134】[NOI2015]小园丁与老司机(动态规划_网络流)
题目: 洛谷 2304 LOJ 2134 (LOJ 上每个测试点有部分分) 写了快一天 -- 好菜啊 分析: 毒瘤二合一题 -- 注意本题(及本文)使用 \(x\) 向右,\(y\) 向上的「数学坐标 ...
- eclipse控制台不显示输出的解决办法
1.进windows菜单 -> show view -> console2.还是windows菜单里面 -> preferences -> 打开左边的run/debug -&g ...
- jsp错误处理
jsp提供了很好的错误能力,除了在java代码中可以使用try语句,还可以指定一个特殊页面,当页面应用遇到未捕获的异常时,用户将看到一个精心设计的网页解释发生了什么,而不是一个用户无法理解的错误信息. ...
- 169 Majority Element 求众数 数组中出现次数超过一半的数字
给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素.你可以假设数组是非空的,并且数组中的众数永远存在. 详见:https://leetcode.com/p ...
- 【转】Java中,&&与&,||与|的区别
转自:http://blog.csdn.net/lishiyuzuji/article/details/8116516 在Java的逻辑运算符中,有这么四类:&&(短路与),& ...
- solr 管理页面详解
solr 服务器管理界面可以查看系统状态.solr设置.分词检测.查询索引.增减core.查看日志等 1.Dashboard(仪表盘) 访问http://localhost:8080/solr时,出现 ...
- IE8下ajax兼容问题
function crossDomainAjax(url, successCallback) { // IE8 & 9 only Cross domain JSON GET request i ...