从文件中读取数据:写入复制文件-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)

 

posted @ 2021-09-18 16:50  逍遥abin  阅读(340)  评论(0)    收藏  举报