2、文件操作

# 文件操作
'''
1、文件上传
2、保存log

系统函数--->打开一个文件返回一个流
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
file: 文件可以是文件名,也可以是一个路径
mode:操作模式   r:表示读    w:表示写  ---》纯文本文件(没有图片)
                rb:        wb:      ----》二进制的读写(没有限制,纯文本/图片/音乐/影片)
eg:读写操作都是在pycharm角度 r---in(输入)
                             w----out(输出)

文件上传:    电影---》上传到网盘(角度)---》(写) 到存储器

文件下载:     网盘----》下载我的硬盘---》(读)网盘上的文件-----》(写)自己的硬盘

buffering:设置缓存


'''
'''
eg1:  读
    open(path/filename,‘rt’)    filename:这个文件在当前目录下可以用文件名读写
                                   默认的是rt,要是读取.doc则会报错   UnicodeDecoderErr
    
'''

# (1)如果不加r,则\a表示转义
stream = open(r'C:\p1\aa.txt')

# container = stream.read()   # 读这个流里面的所有东西
# print(container)

result = stream.readable()    # 判断这个文件是否可读---》True
print(result)

# while True:
#     line = stream.readline()
#     print(line)              # 读出的为空--》因为上面.read已经从流里面把内容读完了
#     if not line:
#         break

# 如果能读取,也只能读取一行内容。 每读出一行,就在内容后面加上换行符


lines = stream.readlines()     # 把内容保存在列表中 ['1  aaa\n', '2  bbb\n', '3  ccc\n', 'hello  baby']
print(lines)

for i in lines:
    print(i)


# (2)读取图片
stream = open(r'C:\p1\girl.jpg','rb')
container = stream.read()            # 取的时候是二进制,所以打印出来的也是二进制
print(container)
# (2)直接把stream理解为管道
#  在进行文件写操作的时候,都会把文件先清干净

# stream = open(r'C:\p1\aa2.txt','w')
#
# s = '''
# 你好!
#     欢迎你!
#          哈哈!
# '''
#
# result = stream.write(s)
# print(result)
#
# stream.write('飞龙')
# stream.close()   # 操作完后释放管道,管道不关闭,则可以一直往里面写东西
#
# # writelines:是可以迭代的结构---列表
# # stream.writelines( Iterable )--》没有自动换行效果



# (2)
'''
stream = open(r'C:\p1\aaa1.txt','w')
result = stream.write('hello')

stream.write('大家!\n')
stream.writelines(['今天\n','天气\n','很好\n'])

stream.close()
'''

# (3)
# mode = a :表示追加操作--》在现有的内容上追加内容
# (1)文件复制

'''
源文件: C:\p1\girl.jpg
目标文件: C:\p2\girl.jpg

with 结合open使用 ,可以帮助我们自动释放资源

'''
# 平时所用的文件操作都是这个原理
# with open(r'C:\p1\girl.jpg','rb') as stream:
#     container = stream.read()     # 读取文件中内容
#
#     with open(r'C:\p2\girl.jpg','wb') as wstream:
#         wstream.write(container)
#
# print('文件复制完成!!')


# (2)一次批量复制文件夹下的多个文件
# 如果直接复制文件夹的话会出错  PermissionError: [Errno 13] Permission denied: 'C:\\p1'
# 权限出错---》open打开必须是文件


# os模块
import os
os.path
# 要得到本文件的路径
'''
print(os.path)

# __file__:当前文件(os.py文件)      
path = os.path.dirname(__file__)     # 得到当前文件路径(绝对路径) D:/SOFT_PACKAGE/PY/Python/2_File
print(path)
print(type(path))                    # <class 'str'>路径以字符串的形式给出
'''

# (3)把p1\girl.jpg---->存放在当前文件所在的目录

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值