从文件中读取数据:写入复制文件-python进阶篇十
一、写入文件
mode为w,就是写入文件,每次都会将原来的文件清空。如果mode为a,那么不会清空前面的内容,会追加内容
方法:
1、write(内容) 写入当前的内容
2、writelines() 没有换行的效果,但可以用列表的形式,添加换行符等
stream = open(r'E:\Project\a\a.txt', 'w') # 建立一个写入流
stream.write('你好啊!') # 会清空文档里面以前的内容
stream.writelines('欢迎光临本市!') # 这样写看起来和前面一样的,而且没有换行
stream.writelines(['我叫张三', '他叫李四', '还有一个是王五'])
# 输出结果:你好啊!欢迎光临本市!我叫张三他叫李四还有一个是王五
stream.writelines(['\n我叫张三\n', '他叫李四\n', '还有一个是王五\n'])
'''
我叫张三
他叫李四
还有一个是王五
'''
stream.close() # 释放
二、文件的复制
# 读取要复制的文件,使用with...as...可以自动关闭stream
with open(r'E:\Project\a\a.jpg', 'rb') as stream:
container = stream.read()
# 写入到需要复制的地方
with open(r'E:\Project\a\b\a.jpg', 'wb') as wstream:
wstream.write(container)
三、通过OS模块把文件复制到本地
import os
with open(r'E:\Project\a\a.jpg', 'rb') as stream:
container = stream.read()
print(stream.name)
file = stream.name
filename = file[file.rfind('\\') + 1:] # 获取图片文件的名字
path = os.path.dirname(__file__) # 获取本地路径
path1 = os.path.join(path, filename) # 用本地路径拼接图片的名字
print(path1)
with open(path1, 'wb') as wstream:
wstream.write(container)
四、os中获取路径的方法。
import os
# 当前文件所在文件夹的路径
path = os.path.dirname(__file__)
print(path)
# 通过相对路径获取绝对路径
path = os.path.abspath('a.jpg')
print(path)
# 获取当前文件的绝对路径
path = os.path.abspath(__file__)
print(path)
# 获取当前文件夹的绝对路径
path = os.getcwd()
print(path)
五、os中split的方法
import os
s = r'E:\Project\test1\a.jpg'
# 分割路径与文件名
path = os.path.split(s)
print(path) # ('E:\\Project\\test1', 'a.jpg'),返回了元祖
# 这样就可以比较简单的获得文件名
filename = path[1]
print(filename) # a.jpg
# 获得文件的扩展名
path = os.path.splitext(s)
print(path) # ('E:\\Project\\test1\\a', '.jpg'),返回了元祖
# 这样就可以比较简单的获得文件扩展名
file_ext = path[1]
print(file_ext) # .jpg
六、os中获取文件大小和路径拼接
import os
s = r'E:\Project\test1\a.jpg'
# 获取文件的大小,单位是字节
size = os.path.getsize(s)
print(size) # 946488
# 拼接文件路径,美加一个逗号后门内容,就会使用/来拼接
result = os.path.join(os.getcwd(), 'a', '.jpg')
print(result) # E:\Project\test1\a\.jpg
七、os中的判断
import os
# 是否绝对路径
s = r'E:\Project\test1\a.jpg'
shima = os.path.isabs(s)
print(shima) # True
# 是否文件
shima = os.path.isfile(s)
print(shima) # True
# 是否文件夹
shima = os.path.isdir(s)
print(shima) # False
八、从一个文件夹复制到哪一个文件夹的实例
import os
# 复制文件
src_path = 'd:\p1'
target_path = 'd:\p2'
def copy(src, target):
# 判断是不是文件夹
if os.path.isdir(src) and os.path.isdir(target):
filelist = os.listdir(src)
# 循环取出文件夹中的内容
for file in filelist:
# 给文件夹中的没有文件赋予绝对路径
path = os.path.join(src, file)
# 判断文件夹里面是不是还有文件夹
if os.path.isdir(path):
# 如果还有文件夹,递归调用函数
copy(path, target)
else:
# 读取文件内容
with open(path, 'rb') as rstream:
container = rstream.read()
# 把内容写入到新的文件夹
path1 = os.path.join(target, file)
with open(path1, 'wb') as wstream:
wstream.write(container)
else:
print('复制完毕')
# 调用函数
copy(src_path, target_path)

浙公网安备 33010602011771号