python source file怎么打开_python文件处理

本文介绍了如何在Python中操作文件,包括文件的概念、为何使用文件、不同模式的含义、文件操作流程、文件复制工具的实现,以及光标移动和文件修改的两种方式。涵盖了操作系统交互、文件操作技巧和基本的文件管理知识。
摘要由CSDN通过智能技术生成

第1章 介绍:

Ø计算机系统分为:计算机硬件,操作系统,应用程序

我们用python语言或着其他语言编写的应用程序想把数据永久保存下来,必须要保存到硬盘中,这就涉及到应用程序操作硬件,应用程序是无法操作硬件的,这就需要操作系统来完成,操作系统吧复杂的硬件操作封装成简单的借口给用户或者应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘的概念,用户或者应用程序通过操作文件,可以将自己的数据永久保存下来

第2章 什么是文件?

文件是操作系统为用户或者应用程序提供一种操作硬盘的虚拟单位

第3章 为何要用文件?

为了存取硬盘上的数据

第4章 如何用文件?

4.1操作文件的流程:

1.打开文件,得到文件句柄并赋值给一个变量

f=open('t1.py',mode='r')

2.通过句柄对文件进行操作

data=f.read()

3.关闭文件

f.close()

4. 正确打开文件的方式:

withopen('t1.py',mode='r',encoding='utf-8')asf :

4.2文件的打开模式:

Ø控制文件操作方法的模式:

文件句柄=open(‘文件路径’,‘模式‘)

r:只读模式【默认模式,文件必须存在,不存在则抛出异常】

查看文件是否可读

withopen('t1.py',mode='r',encoding='utf-8')asf :print(f.readable())

查看文件是否可写

withopen('t1.py',mode='r',encoding='utf-8')asf :print(f.writable())

一次读一行

withopen('t1.py',mode='r',encoding='utf-8')asf :print(f.readline())

一次读取每一行

withopen('t1.py',mode='r',encoding='utf-8')asf :print(f.readlines())

w:只写模式【不可读,不存在则创建,存在则清空内容】

写文件

withopen('a.py',mode='w',encoding='utf-8')asf :

f.write('111')

a:只追加模式【不可读,不存在则创建,存在则只追加内容】

Ø控制文件操作内容格式的模式:

t:无论读写都是以字符串str为单位的

b:无论读写都是以二进制bytes为单位的,对于非文本文件,只能用b模式,b表示以字节的方式操作,(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的编码,图片文件的jgp格式,视频文件的avi格式)

withopen('a.txt',mode='rb')asf:

data=f.read()print(data)

b'123\n345'

第5章 练习:

5.1利用b模式,编写一个cp工具,即可拷贝文件又可拷贝视频图片等文件

src_file=input('源文件地址: ').strip()

dest_file=input('目标文件地址:').strip()withopen(r'%s'%src_file,'rb')asf,open('%s'%dest_file,'wb')asf1:

data=f.read()

f1.write(data)

importsys

iflen(sys.argv) != 3:

print('usage:cp source target')

sys.exit()

source_file,target_file=sys.argv[1],sys.argv[2]

withopen(source_file,'rb') asread_f,open(target_file,'wb') aswrite_fL:

forline inread_f:

write_f.write(line)

第6章 文件内光标移动

6.1t模式下的read(3)

文件打开方式为文本模式时,代表读取3个字符

withopen('a.txt',mode='rt',encoding='utf-8')asf :

data=f.read(3)print(data)

你好啊

文件打开方式为b模式时,代表读取3个字节

withopen('a.txt',mode='rb')asf :

data=f.read(3)print(data)

b'\xe4\xbd\xa0'

6.2其余文件内光标移动都是以字节(bytes)为单位如seek,tell,truncate

Øseek:

参数1:控制移动的字节个数

参数2:控制参照的位置

0(默认的):参照文件开头

1:参照指针当前所在位置

2:参照指针文件末尾

注意:只有0模式可以在t模式下使用,1和2只能在b模式下使用

文本内容为:你好啊123nihao,需求取出啊后面的字符

withopen('a1.txt',mode='rt',encoding='utf-8')asf :

f.seek(6,0)print(f.read())

Øtruncate

是截断文件,所以打开文件方式必须可写,但是不能用w或者w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+模式下测试效果

withopen('a1.txt',mode='at',encoding='utf-8')asf :

f.truncate(3)

Øtell

已文件开头为参照,查看当前指针位置

withopen('a1.txt',mode='rb')asf :

f.seek(6,2)print(f.tell())

6.3练习:给予seek实现tail –f功能

withopen('access.log','rb')asf :

f.seek(0,2)while True:

line=f.readline()ifline ==0:pass

else:print(line.decode('utf-8'),end='')

第7章 文件修改的两种方式

文件的数据是存放于硬盘上的,因为只存在覆盖,不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式:

7.1方式一:将硬盘存放的该文件的内容全部加在到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘

缺点:会过多占用内存

withopen('a.txt',mode='rt',encoding='utf-8')asf :

data=f.read()

data=data.replace('alex','dsb')withopen('a.txt',mode='wt',encoding='utf-8')asf :

f.write(data)

7.2方式二:将硬盘存放的该文件的内容一行一行的读入内存,修改完毕就写入新文件,最后用新文件覆盖原文件

importoswithopen('a.txt',mode='rt',encoding='utf-8')asread_f,\open('.a.txt.swap',mode='wt',encoding='utf-8')aswrite_f :forlineinread_f:

write_f.write(line.replace('dsb','alex'))

os.remove('a.txt')

os.rename('.a.txt.swap','a.txt')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值