文章将会分为以下几个部分:
一、读写的基本逻辑
二、相关的函数及其用法
三、相关的应用
======================================================================
一、读写的基本逻辑
首先需要确定一个思路,python在读取文件的逻辑步骤是怎样的。
1.知道文件的位置
2.建立文件与python之间的通道(流)
3.读取或写文件
4.接收读取的文件
举个简单的例子喝牛奶:
你得先知道牛奶在哪,然后你还得有吸管(这个就是你和牛奶的连接通道),插入吸管后吸牛奶
如果是写入就是装牛奶
-----------------------------------------------------------------------------------------------
二、相关的函数及其用法
1. 首先是最简单的open函数。
用例子来说就是制造吸管的函数
stream = open('要读取或写的文件地址', '判断你是要读还是写')
第二个参数:
‘w’------写,python写进文件(只能是txt)
‘wb’-----写, 将文件二进制转译后再写
‘r’-------读, 用python读取文件(只能是txt)
'rb'-------读, 转译二进制再读
2. write函数
在你建立了管道了之后需要装牛奶,这个动作就是write
stream.write(‘你需要写入的东西’)
3.read 函数
吸牛奶就是read
container = stream.read(). #它会把你文件里的所有东西读出来
4.readline
与read函数类似,但是读一行
你需要引入一个模块:os
os模块里的函数是比较重要的
1. os.listdir("文件夹位置"). #以列表形式返回文件夹内的文件名和文件夹名
2. os.mkdir('创建文件夹的地址') #创建空文件夹
3. os.getcwd(). #得到当前文件夹的位置
4. os.path.dirname(__file__) #得到当前文件的位置
5. os.path.split('文件地址') #可以分割文件目录和文件名
6. os.path.splitxt('文件地址') #可以将文件的类型名与路径分割开
7. os.path.getsize('目标文件地址') #得到文件的大小(字节)
8. os.path.join('文件目录地址','文件名') (可以在后面跟多个文件名) #可以拼接成完整的文件地址
-----------------------------------------------------------------------------------------------
三、相关应用
1. 简单的读写操作
#目标路径
path = '/Users/sliver/Documents/z/aa.txt'
#建立吸管(流)
stream = open(path,'r')
#容器来接收到的牛奶
container = stream.read()
2.连同文件夹一起复制过去
import os
initial = '/Users/sliver/Documents/z'
target= '/Users/sliver/Documents/zz'
def copy(initial_path, target_path):
if os.path.isdir(initial_path) and os.path.isdir(target_path): #判断录入的两个路径是不是文件夹
#将文件夹中的所有文件名和文件夹名弄出来
filename = os.listdir(initial_path)
for file in filename:
# 拼接新的文件名
new_path = os.path.join(initial_path, file)
if os.path.isdir(new_path):# 判断遍历中的路径是不是文件夹
in_targetpath = os.path.join(target_path,file)
os.mkdir(in_targetpath)
copy(new_path,in_targetpath)
else:
with open(new_path,'rb') as rstream:
#读取初始文件的内容
container = rstream.read()
#拼接最后完整的文件路径
final_path = os.path.join(target_path,file)
with open(final_path,'wb') as wstream:
#把初始文件的内容写到新的文件中去
wstream.write(container)
else:
print("复制完成")
else:
print("非文件夹")
#调用看看
copy(initial,target)