一、文件操作初识

1.

path 文件路径 F:\文件.txt

encoding 编码方式 utf-8, gbk ...

mode 操作方式 只读,只写,读写,写读,追加...

f1 = open(r'F:\文件.txt', encoding='utf-8', mode='r')
print(f1.read())
f1.close()

绝对路径:从根目录一直找到文件。

相对路径:从当前目录开始找到的文件。

2. r w a

读模式:

r 只读

rb 直接读bytes类型

f1 = open('世界和平.txt', mode='rb')
print(f1.read())
f1.close()

r+ 读写 写的那部操作是覆盖,并不会清空原文件。

r+b 直接对bytes类型进行读写

写模式:

w 只写 若没有该文件,则创建该文件。若存在该文件,则先删除该文件,再创建该文件。

f1 = open(r'世界和平.txt', encoding='utf-8', mode='w')
f1.write('薛之谦的儿子')
f1.close()

wb 直接写入bytes类型

f1 = open(r'世界和平.txt', mode='wb')
f1.write('薛之谦的儿子'.encode('utf-8'))
f1.close()

w+ 写读

w+b bytes类型的写读

追加模式:

a 追加 若没有文件,创建文件写入内容,若有文件,直接在文件后面追加内容。

ab a+ a+b 一样。。

对于字母,数字,一些常见的特殊字符来说,gbk与utf-8都延用ASCII码的编写方式,所以相互之间可以通用。

二、文件的常见操作。

1..read()    .close()

常用的文件句柄:f1_obj,  f1_file, file, file_handle...

windows的默认编码方式为(当前国家的专属编码,中国为gbk)

Linux,macOS的默认编码方式为:utf-8

2.read(n)  读多少个xx  r模式下是按照字符读取,rb模式下是按照字节读取。

3.readline() 按行读取 将光标移到下行开头

4.readlines() 返回一个list,里边的元素分别是每一行

5.for循环读取,每次读一行

6.seek() 按照字节调整光标 当写入文件后,光标会移到最后,需要调整光标才能继续进行读取。

seek(0, 2) 将光标调整到最后,断点续传时有用。

非文字数据的读与写,只能用bytes类型的相关操作。

7.readable() writable() 判断是否可读可写

8.tell() 告诉光标的位置

9.truncate() 对原文件进行截取,只能在a模式下使用。以字节为单位。

若直接写truncate()或者truncate(0),则会清空光标后的所有内容。

三、文件的另一种操作方法

with open(r'F:\世界和平.txt',encoding='utf-8', mode='r')as f1:
print(f1.read())

这个命令在短时间内会自动关闭文件,但是如果在with op() as下再使用with open() as操作同一文件时,最好在前边手动关闭,因为同一文件无法被定义为不同句柄。

'''
1,打开原文件 old_file,将原内容读取到内存。
2,创建一个新文件new_file。
3,将原内容通过你改写形成新内容,写入到新文件。
4,将原文件删除。
5,将新文件重命名成原文件。
'''
#方法一,原文件内容不打,可以用此方法,但是此方法还是很low。
# import os
# with open('change', encoding='utf-8') as f1,\
# open('change.bak', encoding='utf-8', mode='w') as f2:
# old_content = f1.read()
# new_content = old_content.replace('alex', 'SB')
# f2.write(new_content)
# os.remove('change')
# os.rename('change.bak', 'change')
# 方法2
import os
with open('change', encoding='utf-8') as f1,\
open('change.bak', encoding='utf-8', mode='w') as f2:
for line in f1:
new_line = line.replace('SB', 'alex')
f2.write(new_line)
os.remove('change')
os.rename('change.bak', 'change')

python 8的更多相关文章

  1. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  2. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  3. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  4. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  5. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  6. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  7. Python编码记录

    字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...

  8. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  9. python开发编译器

    引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...

  10. 关于解决python线上问题的几种有效技术

    工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...

随机推荐

  1. VS2017开发.net core 时默认发布路径文件夹多个BPC

    新安装的VS2017,编译后进行发布,结果在bin文件夹下多了个BPC文件夹,很是费解,查了资料才知道是VS2017默认设置了环境变量.在此记录下,如果不需要默认路径可修改环境变量,具体操作如下: 我 ...

  2. Promise 错误处理

    Promise 是一个异步返回单个结果的函数或方法 不使用  `catch()` 时,在  `success handler` 里的错误无法被捕捉到 使用  `catch()` 时,在  `succe ...

  3. Spring-----AOP-----事务

    xml文件中: 手动处理事务: 设置数据源 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooled ...

  4. python学习---装饰器

    什么是装饰器 器即函数 装饰即修饰,意指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 装饰器需要遵循的原则 1.不修改被装饰函数的源代码(开放封闭原则) 2.为被装饰函数 ...

  5. spring websocket报错:No matching message handler methods.

    错误信息: [org.springframework.web.socket.messaging.WebSocketAnnotationMethodMessageHandler]-[DEBUG] No ...

  6. Android中软键盘展示、EditText焦点获取及windowSoftInputMode属性探究

    2017-08-14 21:44:23 有很多中情况,分别展示. 1.Activity不做任何设置,布局使用LinearLayout 会自动滚动EditText之上的所有View,代码: <?x ...

  7. 虚拟机网络NAT模式配置静态IP

    虚拟机网络连接方式 安装好虚拟机以后,在网络连接里面可以看到多了两块网卡: 其中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口. 虚拟机常见有三种网络连接方式 ...

  8. fastreport窗口重置(适用于属性、数据等窗口显示不出来)

    找到如下路径: C:/Users/账户名/AppData/Local/FastReport/FastReport.config 删除即可. 记得先退出使用FastReport的程序,再删除

  9. C++ MySQL编程

    MySQL编程需要包含<mysql.h>头文件.该文件一般在MySQL安装目录下的include文件夹下. 包含头文件还不够,还需要包含“libmysql.lib”库,一般在lib文件夹下 ...

  10. RedLock.Net - 基于Redis分布式锁的开源实现

    工作中,经常会遇到分布式环境中资源访问冲突问题,比如商城的库存数量处理,或者某个事件的原子性操作,都需要确保某个时间段内只有一个线程在访问或处理资源. 因此现在网上也有很多的分布式锁的解决方案,有数据 ...