Python零基础入门(五)——文本文件读写和操作[学习笔记]

目录
一、文件读写
1.文件读写模式
2.文件读写方法
3.使用with简化异常处理
4.使用json库从文件读取和写入数据到文件
5.使用csv库读写csv格式文件
二、文件相关操作
1.文件定位
2.文件目录
文件、目录相关的方法

一、文件读写

1.文件读写模式

⽂件的打开模式:只读,写⼊,追加。
下⾯列出了python⽀持的⼤部分模式:
在这里插入图片描述

# 以只读⽅式打开⽂件。⽂件的指针将会放在⽂件的开头。这是默认模式。
f = open("user_data", "r")
# 以⼆进制格式打开⼀个⽂件⽤于只读。⽂件指针将会放在⽂件的开头。
f = open("user_data", "rb")
# 打开⼀个⽂件⽤于读写。⽂件指针将会放在⽂件的开头。
f = open("user_data", "r+")
# 打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂
件不存在,创建新⽂件。
f = open("user_data_for_write", "w")
# 以⼆进制格式打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删
除。如果该⽂件不存在,创建新⽂件。
f = open("user_data_for_write", "wb")
# 打开⼀个⽂件⽤于读写。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件
不存在,创建新⽂件。
f = open("user_data_for_write", "w+")
# 打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到
已有内容之后。如果该⽂件不存在,
# 创建新⽂件进⾏写⼊。
f = open("user_data_for_write", "a")
# 以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容
将会被写⼊到已有内容之后。如果
# 该⽂件不存在,创建新⽂件进⾏写⼊。
f = open("user_data_for_write", "ab")
# 打开⼀个⽂件⽤于读写。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。⽂件打开时会是追加模式。如果该
⽂件不存在,创建新⽂件⽤于读写。
f = open("user_data_for_write", "a+")

2.文件读写方法

Python对文件读写提供了很多易用的方法:
open():Python内置的open0函数打开一个文件,创建一个file对象,使用相关的方法才可以调用它进行读写

file_object=open(file_name[,acfess_mode])`

1.file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
2.access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见上表。这个参数是非强制的,默认文件访问模式为只读(r)。

close():调用close函数,Python会关闭之前的文件。用close方法关闭文件是一个很好的习惯。

fileobject.close();

read():读取一个文件的内容,调用f.read(size),这将读取一定数目的数据,然后作为字符串或字节对象返回。size是一个可选的数字类型的参数。当size被忽略了或者为负,那么该文件的所有内容都将被读取并且返回。

f=open("user_data.txt","r")
print(f.read(122))
f.close()#关闭打开的文件

f.readline():f.readline0方法会从文件中读取单独的一行。换行符为\n’。f.readline0如果返回一个空字符串,说明已经已经读取到最后一行。

f=open("user_data.txt","r")
print(f.readline())
f.close()#关闭打开的文件

write():write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
write()方法不会在字符串的结尾添加换行符(’\n’):

fileObject.write(string)

被传递的参数是要写入到已打开文件的内容。

# -*- coding: UTF-8 -*-
 
# 打开一个文件
f = open("user_data.txt", "w")
f.write( "Hello wold!\nVery good site!\n")
 
# 关闭打开的文件
f.close()

3.使用with简化异常处理

为防止文件异常,不用with需要:

f=open(...)
	try:
		do something*可能抛出异常
except:
	pass
finally:
	if f:
		f.close()

使用with简化异常处理:

with open('sample.txt', 'r') as f:
    line = f.readline()
    while line:
        print(line.strip())
        line = f.readline()

或者

with open('user_data.txt', 'r') as f:
    for line in f.readlines():
        print(line.strip())

4.Python对JSON文件的读写

JSON和XML都是互联网上数据交换的主要载体。
Python读取JSON文件:

import json
 
filename='data\github_python_stars.json'
with open(‘filename.json’,'r',encoding='utf-8') as file:
    data=json.load(file) #<class 'dict'>,JSON文件读入到内存以后,就是一个Python中的字典。
    # 字典是支持嵌套的,
    print(type(data))

Python写入JSON文件:

# json
import json
config = {'ip': '192.168.1.1', 'port': ['9100', '9101', '9102']}
with open('config.json', 'w+') as f:
    json.dump(config, f) # dump把字典写入json文件
with open('config.json', 'r') as f:
    new_config = json.load(f) # 
print(type(new_config))
print(new_config)
config_str = '{"ip": "192.168.1.1", "port": ["9100", "9101", "9102"]}'
config = json.loads(config_str)
print(config)
new_config_str = json.dumps(config)
print(type(new_config_str))
print(new_config_str)

5.使用csv库读写csv格式文件

Python读取csv文件:

import csv
f=open('user_data.csv','r',encoding='utf-8')
data=csv.reader(f)
print(data)
 
for i in data:
    print(i)

Python写入csv文件:

import csv
config = {'ip': '192.168.1.1', 'port': ['9100', '9101', '9102']}
f=open('user_data.csv','w',newline='',encoding='gbk') # newline=''是为了写入.csv文件后不会出现有空行的情况
writer=csv.writer(f)
for i in config:
    writer.writerow(i)
f.close()

二、文件相关操作

1.文件定位

tell() 方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。

seek(offset [,from]) 方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。

如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

# 打开一个文件
f = open("user_data.txt", "r+")
str = f.read(10)
print ("读取的字符串是 : ", str)
 
# 查找当前位置
position = f.tell()
print ("当前文件位置 : ", position)
 
# 把指针再次重新定位到文件开头
position = f.seek(0, 0)
str = f.read(10)
print ("重新读取字符串 : ", str)
# 关闭打开的文件
f.close()

2.文件目录

os模块提供了很多文件目录相关操作:
mkdir():创建文件目录
可以使用os模块的mkdir()方法在当前目录下创建新的目录们。你需要提供一个包含了要创建的目录名称的参数。

语法:

os.mkdir("newdir")
import os
 
# 创建目录test
os.mkdir("test")

2chdir():改变目录名称
可以用chdir()方法来改变当前的目录。chdir()方法需要的一个参数是你想设成当前目录的目录名称。

语法:

os.chdir("newdir")
import os
 
# 将当前目录改为"/home/newdir"
os.chdir("/home/newdir")

getcwd():显示当前的工作目录

os.getcwd()
import os
 
# 给出当前的目录
print os.getcwd()

rmdir():删除目录,目录名称以参数传递。
在删除这个目录之前,它的所有内容应该先被清除。

os.rmdir('dirname')
import os
 
# 删除”/tmp/test”目录
os.rmdir( "/tmp/test"  )

文件、目录相关的方法

File 对象和 OS 对象提供了很多文件与目录的操作方法,可以通过点击下面链接查看详情:

File 对象方法: file 对象提供了操作文件的一系列方法。
OS 对象方法: 提供了处理文件及目录的一系列方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值