Python 文件读写-1(with关键字的使用 异常处理 finally关键字的使用 csv文件的读写)

打开文件

Python 里使用 open内置函数打开一个文件

open参数介绍
file :用来打开指定的文件(不是文件的名字,而是文件的路径:相对路径和绝对路径)
mode:打开文件时的模式,默认是 r 表示只读
encoding:打开文件时的编码方式

文件的路径

路径分为两种:

  • 绝对路径:从电脑盘符开始的路径
  • 相对路径:当前文件所在文件夹开始的路径(如果你想打开的文件和你现在所写的文件在同一个文件,就可以直接写文件名)
    (注意:我的路径应该是和你们的不一样的,不要直接复制,最好使用自己的文件路径)
# 在python的字符串里,\ 表示转义字符
# 路径书写的三种方式:1. \\ 2. r'\' 3.'/'
# file = open('E:\CloudMusic\pythonlearn\day10\xxx.txt')

# 路径分为两种:
# 1. 绝对路径:从电脑盘符开始的路径
# file = open('E:\\CloudMusic\\pythonlearn\\day10\\xxx.txt')
# file = open(r'E:\CloudMusic\pythonlearn\day10\xxx.txt')
file = open('E:/CloudMusic/pythonlearn/day10/xxx.txt')
print(file.read())

# 2.相对路径:当前文件所在文件夹开始的路径
# ../表示返回上一级文件夹
# ./ 可以省略,表示当前文件夹
file1 = open('demo/sss.txt')
print(file1.read())

file.close()
file1.close()

打开文件方式

r:只读模式,默认,打开文件以后只能读取,不能写入(默认)
w:写入模式,打开文件以后,只能写入,不能读取,如果文件存在,会覆盖原文件,也就是以前的文件内容会被清除,如果文件不存在会创建文件
a:追加模式,会在最后追加内容,如果文件不存在会创建文件,如果存在,就直接在最后追加内容
rb:以二进制的读取 wb/ab:以二进制写入,可用来进行文件是非字符串类型的读取与写入,就比如后面用爬虫爬取网上的视频与图片就可以使用wb方式

# mode:指的是打开文件的方式
# r:只读模式,默认,打开文件以后只能读取,不能写入
# file = open('xxx.txt','r')
# print(file.read())
# file.write('hello') 不能执行写入操作,会报错
# file=open('xx.txt','r') #文件不存在时会报错

# w:写入模式,打开文件以后,只能写入,不能读取,如果文件存在,会覆盖原文件,如果文件不存在会创建文件
# a:追加模式,会在最后追加内容,如果文件不存在会创建文件,如果存在,就直接在最后追加内容
# file = open('xxx.txt', 'w')
# file.write('hello world')#可以执行写入操作
# print(file.read())  # 不能够执行读取,会报错
# file = open('yyy.txt','w')

# b:以二进制的方式打开文件,可以用来操作用来操作非文本文件
# rb:以二进制的读取  wb/ab:以二进制写入
# file = open('xxx.txt','rb')
# print(file.read())
# file=open('xxx.txt','wb')
# file.write('我是你爹'.encode('utf8'))

# 不建议使用
# r+:可读可写.文件不存在时会报错
# w+:可写可读.如果文件存在,会覆盖原文件,如果文件不存在,会创建文件
file = open('xxx.txt', 'w+')
file.write('hahaha')
file.seek(0)  # 写入之后,文件指针到最后,需要调用seek将文件指针重置到开头
print(file.read())

file.close()

注意:

  • 以r的方式打开文件时,encoding是不是必须出现
    如果文件格式为gbk,可以不加encoding=“gbk”
    如果文件格式为utf-8,必须添加encoding=“utf-8”
  • 如果打开的文件是图片,音频或者视频等,打开方式采用rb,但是,此时,不能添加encoding=“xxx”

文件读取方式

file = open('sys模块的使用.py', encoding='utf8',newline='')
# print(file.read())#将所有的数据读取出来
# print(file.read(10))# 指的是10个字符

# readline # 只读取一行数据
# print(file.readline())

# readlines
# 读取全部的内容,返回的结果为一个列表,每一行数据为一个元素
# 注意:如果指明参数,则表示读取指定个数的字符
print(file.readlines(40))
file.close()

with关键字的使用

with 我们称之为上下文管理器,很多需要手动关闭的的连接
比如说 文件连接,socket连接,数据库的连接,都能使用with关键字自动连接
with关键字后面对象,需要实现__enter__和__exit__魔法方法

with open('01.作业.py','r',encoding='utf8') as fp:
    fp.read()# 不需要手动关闭文件
    # fp.close() # with关键字会自动帮我们关闭文件

异常处理

捕获异常

try-except-else

  • a.try-except-else的用法类似于if-elif-else
  • b.else可有可无,根据具体的需求决定
  • c.try后面的代码块被称为监测区域【检测其中的代码是否存在异常】
  • d.工作原理:首先执行try中的语句,如果try中的语句没有异常,则直接跳过所有的except语句,执行else;如果try中的语句有异常,则去except分支中进行匹配错误码,如果匹配到了,则执行except后面的语句;如果没有except匹配,则异常仍然没有被拦截【屏蔽】
def div(a,b):
    return a / b
try:
    x=div(5,1)
except Exception as e:# 如果程序出错,会立刻跳转到 except 语句
    print('程序出错了')
else:# 程序运行如果没有出错,会运行else语句里的代码
    print('运行结果是{}'.format(x))

try-except-finally
说明:不管try中的语句是否存在异常,不管异常是否匹配到了except语句,finally语句都会被执行
作用:表示定义清理行为,表示无论什么情况下都需要进行的操作

def div(a,b):
    return a / b
try:
    x=div(5,1)
except Exception as e:# 如果程序出错,会立刻跳转到 except 语句
    print('程序出错了')
else:# 程序运行如果没有出错,会运行else语句里的代码
    print('运行结果是{}'.format(x))

finally关键字的使用

def demo(a,b):
    try:
        x = a/b
    except ZeroDivisionError:
        print('除数不能为零')
    else:
        return x
    finally:
        return 'yes'# 如果函数里有finally,finally里的返回值会覆盖前面的返回值
print(demo(2, 4))# yes
print(demo(2, 0))
# 除数不能为零
# yes

csv文件的读写

这里需要导入csv模块

import csv

# csv文件
file = open('demo.csv', 'w', encoding='utf8', newline='')
# newline不写会多每次写入会多写入一行
w = csv.writer(file)
# 一行一行的写入
# w.writerow(('姓名','年龄','体重','身高'))
# w.writerow(('张三','18','100','175'))
# w.writerow(('李四','20','130','180'))

# 多行写入
w.writerows(
    [
        ['姓名', '年龄', '体重', '身高'],
        ['张三', '18', '100', '175'],
        ['李四', '20', '130', '180'],
        ['王五', '20', '120', '174']
    ]
)
file.close()

# csv文件读取
file1 = open('demo.csv','r',encoding='utf8')
r = csv.reader(file1)
for x in r:
    print(x)
'''
['姓名', '年龄', '体重', '身高']
['张三', '18', '100', '175']
['李四', '20', '130', '180']
['王五', '20', '120', '174']
'''
file1.close()
QAQ
条件允许的话记得点下赞
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Pythoncsv模块来实现,代码示例如下:import csv# 读取csv csv_file = csv.reader(open('your_file.csv', 'r'))# 定义字典 d = {'key1':'value1', 'key2':'value2'}# 将csv的每一行逐个读取出来 for line in csv_file: # 对每一行中的每个元素进行判断,如果元素在字典中,则替换成相应的值 for i in range(len(line)): if line[i] in d: line[i] = d[line[i]]# 写入新的csv文件 csv_write = csv.writer(open('your_file.csv', 'w')) csv_write.writerows(csv_file) ### 回答2: 使用PythonCSV文件利用字典中的关键字进行替换的方法如下: 1. 首先,导入csv模块和pandas模块,分别用于读取和写入CSV文件和处理数据。 2. 创建一个字典,将需要替换的关键字作为字典的键,将替换后的值作为字典的值。 3. 使用pandas的read_csv函数读取CSV文件,并将数据保存在一个DataFrame对象中。 4. 使用DataFrame对象的replace函数将字典中的关键字替换为对应的值。 5. 使用pandas的to_csv函数将替换后的数据写入新的CSV文件中。 下面是示例代码: ```python import csv import pandas as pd # 创建字典,将需要替换的关键字作为键,将替换后的值作为值 replace_dict = { '关键字1': '替换值1', '关键字2': '替换值2', '关键字3': '替换值3' } # 使用pandas的read_csv函数读取CSV文件,并保存在DataFrame对象中 df = pd.read_csv('input.csv') # 使用DataFrame对象的replace函数将关键字替换为对应的值 df.replace(replace_dict, inplace=True) # 使用pandas的to_csv函数将替换后的数据写入新的CSV文件中 df.to_csv('output.csv', index=False) ``` 以上代码中,`input.csv`为输入的CSV文件,`output.csv`为输出的替换后的CSV文件,可以根据实际需要进行修改。注意,代码中的关键字替换是按照完全匹配进行的,如果需要进行部分匹配或大小写不敏感的替换,可以使用正则表达式或其他方法进行处理。 ### 回答3: 使用PythonCSV文件利用字典中的关键字进行替换可以通过csv模块和字典的键值对进行操作。下面是代码示例: ```python import csv # 定义替换规则的字典 replace_dict = { "关键字1": "替换值1", "关键字2": "替换值2", # 添加更多的替换规则 } # 读取CSV文件 with open('input.csv', 'r') as file: reader = csv.DictReader(file) # 创建输出CSV文件 with open('output.csv', 'w', newline='') as output_file: writer = csv.DictWriter(output_file, fieldnames=reader.fieldnames) writer.writeheader() # 替换关键字并写入新的CSV文件中 for row in reader: updated_row = {} for fieldname, value in row.items(): if value in replace_dict: updated_row[fieldname] = replace_dict[value] else: updated_row[fieldname] = value writer.writerow(updated_row) ``` 在示例中,使用了`csv`模块进行CSV文件读写操作。首先定义了一个`replace_dict`字典,存储需要替换的关键字及其对应的替换值。然后使用`with open`语句打开输入CSV文件和输出CSV文件。`csv.DictReader`用于读取输入CSV文件,并使用`csv.DictWriter`创建输出CSV文件,并通过`fieldnames`参数指定输出的列名与输入文件一致。 接下来,使用嵌套的`for`循环遍历输入文件的每一行和每个字段的值。如果字段的值在`replace_dict`中存在对应的键,即关键字,那么将字段的值替换为对应的替换值;否则保持不变。 最后,使用`writer.writerow`方法将更新后的行写入输出CSV文件中。完成后,输入CSV文件中的关键字将被替换为对应的值,并保存在输出CSV文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值