代码实例学python语法(1):文件读写

在使用python编程时,经常会遇到读写文件的操作。很多童鞋困扰于读写文件的各种模式(如阅读、写入、追加等),以及搞不清open、read、readline、readlines、write等方法的使用。文件读写是python基本操作,本文从实例简要学习,并呈现其代码实现差异性。

1、文件的打开与关闭:open函数和close函数

1.1 open函数

如果你想用python读取文件(如txt、csv等),第一步要用open函数打开文件。open()是python的内置函数,它会返回一个文件对象,这个文件对象拥有read、readline、write、close等方法。open函数有两个参数:

fo = open(‘file’,‘mode’)

参数解释
file:需要打开的文件路径
mode(可选):打开文件的模式,如只读、追加、写入等

mode常用的模式:
r:表示文件只能读取
w:表示文件只能写入
a:表示打开文件,在原有内容的基础上追加内容,在末尾写入
w+:表示可以对文件进行读写双重操作

当你需要以字节(二进制)形式读写文件时,只需要在mode参数中追加’b’即可:
rb:以二进制格式打开一个文件,用于只读
wb:以二进制格式打开一个文件,用于只写
ab:以二进制格式打开一个文件,用于追加
wb+:以二进制格式打开一个文件,用于读写

当你在默认模式下读取文本文件时(二进制文件不可以),文件中的换行符会转换为’\n’形式。
在这里插入图片描述

1.2 close函数

File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。
如下实例:

# 打开一个文件
fo = open("foo.txt", "w")
print("文件名: ", fo.name)
 
# 关闭打开的文件
fo.close()

1.3 with语句

在打开文件时,很多人通常直接用open(‘file’),这样并不酷。最好使用 with 关键字。优点是当子句体结束后文件会正确关闭,即使在某个时刻引发了异常。
例子:

with open('workfile') as f:
     read_data = f.read()
f.closed

这是出于异常处理的一种文件打开方式。(是不是显得逼格更高呢?haha)

2、FILE对象

一个文件被打开后,你有一个file对象fo,你可以得到有关该文件的各种信息。以下是和file对象相关的所有属性的列表:

属性描述
file.close关闭文件,若关闭返回True
file.mode返回文件的打开模式
file.name返回文件的名称

如下实例:

# 打开一个文件
fo = open("foo.txt", "w")
print("文件名: ", fo.name)
print("是否已关闭 : ", fo.closed)
print("访问模式 : ", fo.mode)

实例输出结果如下:

文件名:  foo.txt
是否已关闭 :  False
访问模式 :  w

3、文件对象的三种读取方式:read()、readline()和readlines()

下面以一个csv文件的读取为例进行说明。csv内容如下:

Frog
FrogDogShadowDiversion
1m3m2m1m
2m4m2m5m
4m7m6m6m
9m8m6m8m
1p1p3p8m

3.1 read()函数

当使用open函数打开文件后,就可以使用该文件对象的各种方法了,read就是其中一种。read()会读取一些数据并将其作为字符串(在文本模式下)或字节对象(在二进制模式下)返回。

read()有一个参数:

#参数size(可选)为数字,表示从已打开文件中读取的字节计数,默认情况下为读取全部。
fo.read(size) # fo为文件对象

读取上述csv文件的前66个字节如下:

fo = open("f:\\test.csv","r")
content = fo.read(66)
print(content)
fo.close()

输出结果为:

Frog,,,
Frog,Dog,Shadow,Diversion
1m,3m,2m,1m
2m,4m,2m,5m
4m,7m,6m

注意,这里的字节包含每一行行末的换行符\n。空格不占字节位置。

3.2 readline()函数

readline方法从文件中读取整行,包括换行符’\n’。换行符(\n)留在字符串的末尾,如果文件不以换行符结尾,则在文件的最后一行省略,这使得返回值明确无误。如果 f.readline() 返回一个空的字符串,则表示已经到达了文件末尾,而空行使用 ‘\n’ 表示,该字符串只包含一个换行符。
f.readline()有一个参数:f.readline(size),其中参数size表示从文件读取的字节数。
仍以上述csv文件为例。

with  open('f:\\test.csv') as f:
    print(f.readline())
    print(f.readline(13))
    f.close()

输出结果为:

Frog,,,

Frog,Dog,Shad

可以看出,readline方法会记住上一个readline函数读取的位置,接着读取下一行。所以当你需要遍历文件每一行的时候,不妨使用readline方法吧!

3.3 readlines()函数

readlines方法和readline方法长得像,但功能不一样,前面说过readline方法只读取一行,readlines方法则是读取所有行,返回的是所有行组成的列表。readlines方法没有参数,使用更加简单。

with  open('f:\\test.csv') as f:
    print(f.readlines())
    f.close()

输出结果为:

['Frog,,,\n', 'Frog,Dog,Shadow,Diversion\n', '1m,3m,2m,1m\n', '2m,4m,2m,5m\n', '4m,7m,6m,6m\n', '9m,8m,6m,8m\n', '1p,1p,3p,8m\n']

显示了csv文件中每一行的换行符,每一行为一个字符串。更进一步进行行处理,实例如下:

with open('f:\\test.csv') as fo:
     for line in fo.readlines():
         line = line.strip()  # 移除换行符
         data = line.split(',') # 以,切片分割成多个小字符串
         print("data",data)

得到各行处理的结果:

data ['Frog', '', '', '']
data ['Frog', 'Dog', 'Shadow', 'Diversion']
data ['1m', '3m', '2m', '1m']
data ['2m', '4m', '2m', '5m']
data ['4m', '7m', '6m', '6m']
data ['9m', '8m', '6m', '8m']
data ['1p', '1p', '3p', '8m']

4、文件对象的写操作:write()

write方法顾名思义,就是将字符串写入到文件里。

with  open('sample.txt','w') as fw:
    fw.write('hello,my friends!\nthis is python big data analysis')
    fw.close()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种高级编程语言,已经成为了数据科和人工智能领域的标准语言Python语法是非常简单易懂的,使得初者也能够很快上手。本文将介绍Python语法,包括语句、模块、函数、变量和数据类型、控制流语句、面向对象编程、异常处理、文件操作和正则表达式。 一、语句 Python中的语句是由一行或多行代码组成的。Python中的语句不需要使用分号(;)来分隔,而是使用换行符。例如: ``` print("Hello, world!") ``` Python中的注释使用#号。例如: ``` # This is a comment ``` 二、模块 Python中的模块是一个包含函数、类和变量的文件。可以使用import关键字导入模块。例如: ``` import math print(math.sqrt(4)) ``` 可以使用from...import语句导入模块中的函数、类和变量。例如: ``` from math import sqrt print(sqrt(4)) ``` 三、函数 Python中的函数使用def关键字定义。例如: ``` def add(a, b): return a + b ``` Python中的函数可以有默认参数值和不定长参数。例如: ``` def say_hello(name="world"): print("Hello, " + name + "!") say_hello() say_hello("Alice") def add(*args): return sum(args) print(add(1, 2, 3)) ``` 四、变量和数据类型 Python是一种动态类型语言,也就是说,变量的数据类型不需要预先声明。在Python中,变量名就是变量的声明。例如:x = 5。Python支持多种数据类型,包括整数、浮点数、字符串、布尔值、列表、元组和字典。 五、控制流语句 Python中的控制流语句包括条件语句和循环语句。条件语句使用if和else关键字。例如: ``` if x > 0: print("x is positive") else: print("x is not positive") ``` 循环语句包括while和for循环。例如: ``` while x < 10: x += 1 print(x) for i in range(10): print(i) ``` 六、面向对象编程 Python是一种面向对象的语言。使用class关键字定义类,使用self关键字引用当前实例。例如: ``` class Person: def __init__(self, name): self.name = name def say_hello(self): print("Hello, my name is " + self.name) person = Person("Alice") person.say_hello() ``` 七、异常处理 Python中的异常处理使用try和except关键字。例如: ``` try: x = int(input("Enter a number: ")) print("You entered " + str(x)) except ValueError: print("That's not a number!") ``` 八、文件操作 Python中的文件操作使用open函数打开文件,使用read和write方法读写文件。例如: ``` file = open("example.txt", "w") file.write("Hello, world!") file.close() file = open("example.txt", "r") print(file.read()) file.close() ``` 九、正则表达式 Python中的正则表达式使用re模块。例如: ``` import re pattern = r"([a-zA-Z]+) (\d+)" text = "June 24, August 9, Dec 12" match = re.search(pattern, text) if match: print(match.group(0)) print(match.group(1)) print(match.group(2)) ``` 结论 本文介绍了Python语法,包括语句、模块、函数、变量和数据类型、控制流语句、面向对象编程、异常处理、文件操作和正则表达式。这些语法Python编程的基础,掌握它们对于编写高质量的Python代码至关重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值