目录
一、文件读写
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 对象提供了很多文件与目录的操作方法,可以通过点击下面链接查看详情: