python对文件的独操作有哪几种?请详细说明每种方法

Python015

python对文件的独操作有哪几种?请详细说明每种方法,第1张

1.打开文件:

f=open(r'E:\PythonProjects\test7\a.txt',mode='rt',encoding='utf-8')

以上三个单引号内分别表示:要打开的文件的路径,mode为文件打开方式具体介绍在下文,encoding为文件的字符编码,一般默认为utf-8

2.读写文件:

data=f.read() # 读文件

f.write()# 写文件

3.关闭文件:

f.close()

4.为了简便,一般采用上下文的方法进行文件操作,可不用关闭文件

with open('a.txt',mode='rt',encoding='utf-8') as f:

data=f.read()

print(data)

with open('a.txt',mode='wt',encoding='utf-8') as f:

f.write('hello world')

5.控制文件读写的操作:

r:(默认模式):只读:以该模式打开文件时,若文件不存在则报错,若文件存在,则文件指针在文件开头,即从文件开头开始读文件

w:只写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则清空文件内容,文件指针移到开头

a:追加写:以该模式打开文件时,若文件不存在则创建一个文件,如文件存在,则将文件指针移到文件末尾,在文件末尾写入新的内容

6.控制文件读写内容的模式:(t 和 b都不能单独使用,必须与r,w,a结合使用)

t:(默认):无论读写都是以字符为单位,只能识别文本文件,必须要制定encoding

b:无论读写都是以字节为单位,可以识别所有文件,一定不能指定encoding

7.文件的拷贝

with open ('a.txt',mode='rb') as af,\

open('b.txt',mode='wb') as bf:

data=af.read

f.write(data)

执行程序后,打开文件,即可发现文件已成功拷贝,这里使用 b 而不是用 t 模式,是因为文件有多种格式

8.文件的修改:

文件的修改是在硬盘上实现文件的覆盖,相当于一个新的文件以旧的文件名来命名的文件的修改有俩种方式,分别适用于不同的情景

方式一(适用于容量小的文件):这种方式的原理是:创建一个新的文件,将旧文件的内容拷贝到新的文件中这样内存里就存在俩个文件,故不适用于容量大的文件,具体代码见下方 View

with open('a.txt',mode='rt',encoding='utf-8') as f:

data=f.read()

data_new=data.replace('yang', 'yv')

with open('b.txt',mode='wt',encoding='utf-8')as p:

p.write(data_new)

方式二(适用于容量大的文件):此方式的原理为:读取旧文件的一行内容,修改后写到临时文件中,循环往复直到写完,然后将源文件删除,将临时文件命名为源文件名.这种方式在内存中只存在2行文件,节省内存,可用于大文件

import os

with open('b.txt',mode='rt',encoding='utf-8') as f,\

open('.b.txt.swap',mode='wt',encoding='utf-8') as p:

for line in f:

p.write(line.replace('yv','yang'))

# 调用replace方法,将源文件中的'yv',换成'yang'

os.remove('b.txt')

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

9. 文件的阶段:truncate(n)

将文件中n个字节后内容全删了,当 n 不存在时,即删除文件全部内容

10.文件内指针的移动

f.seek(): 指针的移动是以字节为单位的

seek 有三种模式:

0:(默认模式) 指针在文件开头,只有在 0 模式可以在 t 模式下用,也可以在 b 模式下用,而 1 ,2 模式只能在 b 模式下使用

1:指针在当前位置

2:指针在文件末尾

以下为具体事例:

# 0

with open('a.txt',mode='rt',encoding='utf-8')as f:

f.seek(3,0)

print(f.tell()) # 指针当前位置

print(f.read()) # 从指针后读出所有内容

# 1 参照指针当前位置

with open('a.txt',mode='rb')as f:

f.read(2)

f.seek(4,1)

print(f.tell())

print(f.read().decode('utf-8'))

# 2 参照文件末尾

with open('a.txt',mode='rb')as f:

f.seek(-5,2)

print(f.tell())

print(f.read().decode('utf-8'))

当 seek处于 2 模式时,可以将文件中新加入的内容打印出来,具体代码如下:

# 另一个文件进行写操作,写的代码如下:

with open('a.txt',mode='at',encoding='utf-8')as f:

f.write('hello world\n')

# 每在文件中写入新的内容,都打印出来,以下代码执行打印操作:

import time

with open('a.txt',mode='rb')as f:

f.seek(0,2)

while True:

line=f.readline() # readline 可以读取没有内容的部分

# print(line.decode('utf-8'))

if len(line)==0:

time.sleep(0.1)

else:

print(line.decode('utf-8'))

ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。

INI是英文“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。通过它,可以将经常需要改变的参数保存起来(而且还可读),使程序更加的灵活。

先给出一个ini文件的示例。

1234567891011[School]ip = 10.15.40.123mask = 255.255.255.0gateway = 10.15.40.1dns = 211.82.96.1 [Match]ip = 172.17.29.120mask = 255.255.255.0gateway = 172.17.29.1dns = 0.0.0.0

这个配置文件中保存的是不同场合下的IP设置参数。

首先,Python读取ini配置需要用到ConfigParser包,所以要先加载它。

1import configparser

之后我们需要载入配置文件。

1config=configparser.ConfigParser()

#IpConfig.ini可以是一个不存在的文件,意味着准备新建配置文件。

1config.read("IpConfig.ini")

接下来,我们可以使用configparser.add_section()向配置文件中添加一个Section。

#添加节School

1config.add_section("School")

注意:如果文件中已经存在相应的项目,则不能再增加同名的节。

然后可以使用configparser.set()在节School中增加新的参数。

#添加新的IP地址参数

1234config.set("School","IP","192.168.1.120")config.set("School","Mask","255.255.255.0")config.set("School","Gateway","192.168.1.1")config.set("School","DNS","211.82.96.1")

你可以以同样的方式增加其它几项。

#由于ini文件中可能有同名项,所以做了异常处理

12345678try:config.add_section("Match")config.set("Match","IP","172.17.29.120")config.set("Match","Mask","255.255.255.0")config.set("Match","Gateway","172.17.29.1")config.set("Match","DNS","0.0.0.0")except configparser.DuplicateSectionError:print("Section 'Match' already exists")

增加完所有需要的项目后,要记得使用configparser.write()进行写入操作。

1config.write(open("IpConfig.ini", "w"))

以上就是写入配置文件的过程。

接下来我们使用configparser.get()读取刚才写入配置文件中的参数。读取之前要记得读取ini文件。

12345ip=config.get("School","IP")mask=config.get("School","mask")gateway=config.get("School","Gateway")dns=config.get("School","DNS")print((ip,mask+"\n"+gateway,dns)

下面是一个完整的示例程序,它将生成一个IpConfig.ini的配置文件,再读取文件中的数据,输出到屏幕上。

1# -*- coding: utf-8 -*-import configparser#读取配置文件config=configparser.ConfigParser()config.read("IpConfig.ini")#写入宿舍配置文件try:config.add_section("School")config.set("School","IP","10.15.40.123")config.set("School","Mask","255.255.255.0")config.set("School","Gateway","10.15.40.1")config.set("School","DNS","211.82.96.1")except configparser.DuplicateSectionError:print("Section 'School' already exists")#写入比赛配置文件try:config.add_section("Match")config.set("Match","IP","172.17.29.120")config.set("Match","Mask","255.255.255.0")config.set("Match","Gateway","172.17.29.1")config.set("Match","DNS","0.0.0.0")except configparser.DuplicateSectionError:print("Section 'Match' already exists")#写入配置文件config.write(open("IpConfig.ini", "w"))ip=config.get("School","IP")mask=config.get("School","mask")gateway=config.get("School","Gateway")dns=config.get("School","DNS")print((ip,mask+"\n"+gateway,dns))

用python读取文本文件,对读出的每一行进行操作,写法如下:

f = open("test.txt", "r")

while True:

line = f.readline()

if line:

pass    # do something here

line=line.strip()

p=line.rfind('.')

filename=line[0:p]

print "create %s"%line

else:

break

f.close()

扩展资料:

Python将txt文件读取到一个字符串里的操作方法如下:

1、首先,添加Python文件和文本文件以在vscode中读取,如下图所示。

2、其次,完成上述步骤后,在txt文件中写入一些内容以用于内容读取,只需将其写入即可,如下图所示。

3、接着,完成上述步骤后,必须导入os文件,以便可以在os中调用某些文件操作方法,如下图所示。

4、然后,完成上述步骤后,打开要读取的文件,并将读取的内容数据复制到字符串中,如下图所示。

5、随后,完成上述步骤后,打印字符串以显示内容,以方便参考,如下图所示。

6、接着,完成上述步骤后,运行jy.py文件,该文件将开始读取和打印内容,如下图所示。

7、最后,完成上述步骤后,可以看到已读取txt文件的内容,如下图所示。