本节将描述文件的基本操作:读,写以及复制等等。

1. 文件的分类

按文件中数据的组织形式可以把文件分为文本文件和二进制文件。

1.1 文本文件

文本文件存储的是常规字符串,由文本组成,通常每行以换行符’\n’结尾。文件中的字符串,人类可以直接阅读或理解。可以用记事本直接打开。

1.2 二进制文件

二进制文件把对象内容以字节串(bytes)进行存储,无法用记事本或其他普通文本处理软件直接进行编辑。通常也无法被人类直接阅读和理解,需要使用专门的软件进行解码后读取,显示,修改会执行。常见的有图像图像文件,音频文件,视频文件,可执行文件等等。

2. Python中文件的操作

对文件的操作一般包括三步:

  • 1).打开文件
  • 2).读、写文件
  • 3).关闭文件

2.1 打开文件

f = open("data.txt",'r')
使用 open 打开文件,返回文件对象,其中参数可以是访问方式,例如 r,w等;
也可以加上编码格式,例如:
f = open("text1",encoding = 'UTF8')

文件的访问方式:

python代码如何分文件 python的文件可分为_eval函数

2.2 读、写操作、文件的复制

1) read()表示读文件,表示读取所有的文件内容
f = open("text1",encoding = 'UTF8')    #默认情况下是读文件
#读文件
text = f.read()
print(text)
print(len(text))
f.close()
2) readline(),从文本文件中读取一行内容作为结果返回。
代码演示一:
f = open("text1",encoding = 'UTF8')
#读文件
text = f.readline()
print(text)
f.close()

代码演示二:
f = open("text1",encoding = 'UTF8')
while True:
    text = f.readline()
    if not text:
        break
    #每读取一行的末尾已经有了一个'\n'
    print(text,end="")
f.close()
3) readlines(),把文本文件中的每行文本作为一个字符串存入列表中,返回该列表。
f = open("text1",encoding = 'UTF8')
#读文件
text = f.readlines()
print(text)
f.close()
4) write(),当使用访问方式为 w 时,会覆盖文件之前的内容。
f = open("text1",'w',encoding = 'UTF8')
#写文件
text= "小曾同学"
f.write(text)
#每读取一行的末尾已经有了一个'\n'
print(text)
f.close()
5) 文件复制,当目标文件不存在时,则自动创建。
代码演示一:全部读取,并全部复制
f = open("text1",encoding = 'UTF8')    #源文件
f1 = open("text2","w",encoding = 'UTF8')  # 目标文件
text = f.read()
f1.write(text)
f.close()
f1.close()

代码演示二:一行一行的复制
f = open("text1",encoding = 'UTF8')
f1 = open("text2","w",encoding = 'UTF8')
while True:
    text = f.readline()
    if not text:
        break
    f1.write(text)
f.close()
f1.close()

2.3 关闭文件

f.close()
close(),关闭文件,并释放文件对象。
或者
with open("test.txt") as f:
		pass
当采用这种方式时,可以不同close.
with是上下文管理关键字,可以自动管理资源,不论何种原因跳出with块,
总能保证文件被正确关闭,并且可以在代码块执行完毕后自动还原进入代码块时的现场。

3. 文本文件的编码格式

常见的编码有ASCII编码,UNICODE编码,

  • Python 2.x 默认使用的是ASCII编码
  • Python 3.x 默认使用的是Unicode编码

所以有的时候我们会看到有些Python文件第一行,写上:
*coding:utf8 *
或者
coding = utf8

4. eval()函数

将字符串当成有效的表达式来求值并返回计算结果

print(eval("1+2"))
print(eval("'*'*10"))
print(eval("[1,2,3,4,5]"))
print(eval("{'name':'小曾'}"))

结果为:
3
**********
[1, 2, 3, 4, 5]
{'name': '小曾'}

示例:
a = eval(input("请输入运算式"))
print(a)