三元运算:
a = 6 b = 8 val = a if 12431234 < 5441234 else b print(val)
文件操作:
f = open(file='C:/Users/Administrator.USER-20171109UR/Desktop/新建文本文档.txt',mode='r',encoding='gbk') data = f.read() print(data) f.close()
这里的路径写法目前自己知道的有三种:
1、linux路径方法
'C:/Users/Administrator.USER-20171109UR/Desktop/新建文本文档.txt'
2、双斜杠
'C:\Users\Administrator.USER-20171109UR\Desktop\新建文本文档.txt'
3、显式声明字符串不用转义
r'C:UsersAdministrator.USER-20171109URDesktop新建文本文档.txt'
mode = 'rb'以16进制来读取
f = open(file='C:\Users\Administrator.USER-20171109UR\Desktop\新建 Microsoft Office Word 文档.docx',mode='rb')
data = f.read() print(data) f.close()
1、装python工具库方法:eg:装chardet 用pip,python2 用pip2,python3用pip3,后面加 install ,最后加工具名
pip3 install chardet
2、查看文件编码类型:
import chardet f = open(file='新建文本文档.txt',mode='rb') data = f.read() f.close() result = chardet.detect(data) print(result) print(data.decode('ascii'))#这是解码
结果显示:
3、如果文件内容多,运行内存不够,那就一次取一行
f = open('新建文本文档.txt','r',encoding='ascii') for index,line in enumerate(f): print(index,line) f.close()
4、print本身会换行
5.数据写入:
f=open('albert.txt','w',encoding='gbk') f.write('杨昌龙') f.close()
f=open('albert.txt','wb') f.write('杨昌龙aaa'.encode('gbk')) f.close()
6、追加:
f= open('albert.txt','ab') f.write(' 杨昌龙'.encode('gbk')) f.close()
7.文件读写:
f = open('albert.txt','r+',encoding='gb2312') data = f.read() print(data) f.write(' 枯藤老树昏鸦') f.write(' 小桥流水人家') f.write(" 古道西风瘦马") f.write(" 夕阳西下") f.write(' 断肠人在天涯') print('2',f.read()) f.close()
上面执行后,只是把2之前的打印出来,文件里,写进去了
8、文件写读:
f = open('albert.txt','w+',encoding='gb2312') data = f.read() print(data) f.write(' 枯藤老树昏鸦') f.write(' 小桥流水人家') f.write(" 古道西风瘦马") f.write(" 夕阳西下") f.write(' 断肠人在天涯') print('2',f.read()) f.close()
上面执行后,仅仅显示 2 ,文件中只有增加的
flush()强行刷新到硬盘中
9.分行文件修改的:
f_name = "albert.txt" f_new_name = "%s.new"%f_name old_str = "杨昌龙" new_str = "马致远" f = open(f_name,"r",encoding="utf-8") f_new = open(f_new_name,"w",encoding="utf-8") for line in f: if old_str in line: line = line.replace(old_str,new_str) f_new.write(line) f.close() f_new.close()
修改用seek()光标定位置,再r+修改
总结:
打开文件的模式有:
r,只读模式(默认)。
w,只写模式。【不可读;不存在则创建;存在则删除内容;】
a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+"表示可以同时读写某个文件
r+,可读写文件。【可读;可写;可追加】
w+,写读
a+,同a
"U"表示在读取时,可以将 自动转换成 (与 r 或 r+ 模式同使用)
rU
r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理 二进制文件时需标注)
rb
wb
ab
经常用到一下:对文件内容进行修改
f = open('information.txt','r',encoding='utf-8') f_new = open('information_bak.txt','w',encoding='utf-8') old_str = input('请输入修改前的内容:') new_str = input('请输入修改后的内容:') for line in f: if old_str in line: line = line.replace(old_str,new_str) f_new.write(line) f.close() f_new.close()